|
|
|
|
INDEXを使用しない検索(2) |
|
スポンサード リンク
● INDEX列でLIKEは前方一致以外は、INDEXが使用されない
|
○ select * from emp where emp_id = 'E00%';
× select * from emp where emp_id = '%001';
× select * from emp where emp_id = '%00%'; |
● ORDER BY句の指定列が全てINDEXに指定ないと、ソートにINDEXが使用されない
ORDER BY 句で指定する項目は、全てINDEXに含まれ、かつ、NOT NULL項目の場合は、高速にソートされます。
● 暗黙の型変換は、INDEXが使用されない
WHERE句で指定した、列の型とデータの型が異なる場合、ORACLEは自動的に型変換を実行するが、型を自動変換する場合はINDEXが使用されない。
dept_id が cahr型で定義されている場合
|
× select * from dept where dept_id = 123;
○ select * from dept where dept_id = '123'; |
● 複合INDEXは先頭列から指定しないと、INDEXが使用されない
以下の順番で複合INDEXを作成
|
(1)emp_id
(2)dept_id
(3)job_id |
上記の複合INDEXの場合の、INDEXの使用/未使用となるWHERE句パターン
|
○ select * from emp where emp_id = 'E01' and dept_id = 'D01' and job_id
= 'J01';
○ select * from emp where emp_id = 'E01' and dept_id = 'D01';
○ select * from emp where emp_id = 'E01' and job_id = 'J01';
○ select * from emp where emp_id = 'E01';
× select * from emp where dept_id = 'D01';
× select * from emp where job_id = 'J01';
× select * from emp where dept_id = 'D01' and job_id = 'J01'; |
スポンサード リンク
|
|
|
|
|