數據庫是例如Oracle人力資源數據庫:http://elsasoft.com/samples/oracle/Oracle.XE.HR/default.htm如何創建一個產生這個解釋計劃的查詢? (的Oracle SQL)
解釋計劃:
----------------------------------------------------------
| Id | Operation | Name |
----------------------------------------------------------
| 0 | SELECT STATEMENT | |
| 1 | HASH UNIQUE | |
|* 2 | TABLE ACCESS BY INDEX ROWID | EMPLOYEES |
|* 3 | INDEX RANGE SCAN | EMP_DEPARTMENT_IX |
----------------------------------------------------------
Predictate Information (identified by operation id):
----------------------------------------------------
2 - filter("MANAGER_ID" < 150)
3 - access("DEPARTMENT_ID" < 50)
我嘗試這個查詢,但它產生了非常不同的結果:
select /*+ use_hash(emp) */*
from HR.employees emp
where MANAGER_ID <150 and
DEPARTMENT_ID <50;
我已經建立了filter
和access
的where語句。並從HASH_UNIQUE
use_hash
。但結果仍然是非常不同的,我不知道如何解決它
的'HASH UNIQUE'指示存在一個'distinct'或可能'by'涉及 – 2014-12-02 11:39:13
我試圖SELECT DISTINCT'EMPLOYEE_ID組'from ...但仍然不是UNIQUE_ID – 2014-12-02 11:52:44
請嘗試像@JonHeller的回答,以區別'first_name'或另一個非索引列。 – 2014-12-08 14:11:20