ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
INDEXを使用しない検索(1)
スポンサード リンク

● INDEX列で論理比較のNOTの使用は、INDEXが使用されない
 × select * from emp where emp_id <> 'E01';

 × select * from emp where emp_id not in ('E01','E02','E03');


● INDEX列で関数の使用は、INDEXが使用されない
  Bツリー・インデックスで関数を使用すると、INDEXが使用されない。
  但し、ファンクション・インデックスを作成した場合は関数が使用できる。

 × select * from emp where substr(emp_id,1,1) = 'E';


● INDEX列で演算子の使用は、INDEXが使用されない
 ○ select * from emp where salary > 100;

 × select * from emp where salary - 50 > 100;


● INDEX列でNULL比較の使用は、INDEXが使用されない
  Bツリー・インデックスの中にはNULL値は存在しないので、WHERE句に「IS NULL」を指定するとINDEXは使用されない。
  但し、ビットマップ・インデックスの場合は、NULL値はインデックスに含まれるので、INDEXは使用される。
 × select * from emp where emp_name is null;


スポンサード リンク


大文字/小文字/空白や改行の数を統一する
バインド変数を使用する
ワイルドカード「 * 」は使用しない
ANDよりBETWEENの使用を検討する
HAVINGよりWHEREの使用を検討する
UNIONよりUNION ALLの使用を検討する
テーブルに別名を付ける
ROWIDの使用を検討する
列番号は使用しない
DISTINCT句よりEXISTS句の使用を検討する
NOT IN句よりNOT EXISTS句の使用を検討する
INDEX列を使用しない検索(1)
INDEX列を使用しない検索(2)

SQLチューニングへ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ