数据库是例如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