SQL> desc emp_1;
Name Type Nullable Default Comments
-------- ------------ -------- ------- --------
EMP_ID NUMBER
EMP_NAME VARCHAR2(20) Y
DEPTNO NUMBER(10) Y
SQL> 説明部門
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
Explain Plan :-
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
select /*+ index(emp_1 abc_idex) */ emp_1 からの emp_name INNER JOIN dept ON emp_1.deptno = dept.dept_id and emp_1.emp_name=dept.dept_name
Explain Plan:-
SELECT STATEMENT, GOAL = ALL_ROWS 272 1 11
HASH JOIN 272 1 11
TABLE ACCESS FULL EXAMINBI DEPT 3 4 24
TABLE ACCESS BY INDEX ROWID EXAMINBI EMP_1 267 100000 500000
INDEX FULL SCAN EXAMINBI ABC_IDEX 131 100000
あなたの助けを借りて、インデックスの概念をクリアしています。私の理解では、オラクルはインデックス化されていない他の列(emp_name)も必要とするため、インデックスヒントをスキップしますが、2番目のケースではemp_1テーブルがインデックスによってスキャンされました。私の質問は、インデックスが使用されていない結合に別の列を使用している場合(この例ではemp_name)に役立ちますか? そのような場合、インデックスヒントを使用する必要がありますか? *注:- これは emp_name であり、dept_name は論理結合ではないことはわかっていますが、テスト目的で同じものを作成しました。*