0
我試圖瞭解索引提示,但即使在查詢中提供提示後,它仍未被使用。這是我遵循的步驟,我錯過了什麼?索引提示不起作用
SQL> desc emp_1;
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMP_ID NUMBER
EMP_NAME VARCHAR2(20) Y
DEPTNO NUMBER(10) Y
SQL> desc dept
Name Type Nullable Default Comments
--------- ------------ -------- ------- --------
DEPT_ID NUMBER Y
DEPT_NAME VARCHAR2(20) Y
SQL> CREATE INDEX abc_idex ON emp_1 (deptno);
Index created
select /*+ index(emp_1.abc_idex) */ emp_name from emp_1
INNER JOIN dept ON emp_1.deptno = dept.dept_id
解釋計劃: -
SELECT STATEMENT, GOAL = ALL_ROWS 6 1 28
HASH JOIN 6 1 28
TABLE ACCESS FULL EXAMINBI EMP_1 2 1 25
TABLE ACCESS FULL EXAMINBI DEPT 3 4 12
按劉若英的回答
select /*+ index(emp_1 abc_idex) */ emp_name from emp_1
INNER JOIN dept ON emp_1.deptno = dept.dept_id
解釋計劃
SELECT STATEMENT, GOAL = ALL_ROWS 271 100000 800000
MERGE JOIN 271 100000 800000
TABLE ACCESS BY INDEX ROWID EXAMINBI EMP_1 267 100000 500000
INDEX FULL SCAN EXAMINBI ABC_IDEX 131 100000
SORT JOIN 4 4 12
TABLE ACCESS FULL EXAMINBI DEPT 3 4 12
@ Rene - 我在emp_1表中添加了大約100000條記錄,反正它應該不重要,因爲我在這裏給出明確的提示.. @Mat我只是試圖瞭解索引,所以它在這一點上的自我學習..我已經從sql提示符複製了所有命令。 –