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

ORACLE SQL リファレンス

Web oracle.se-free.com
SQLチューニング(2)
スポンサード リンク

● UNIONよりUNION ALLの使用を検討する
  
  UNIONはSELECTの結果をマージした後に、暗黙のソート処理をして重複データを排除しますが、重複データが無いことが分かっている場合は、暗黙のソート処理を回避するために、UNION ALLを使用する

  ※UNIONの他にも、DISTINCTや、GROUP BY、INTERSEST、MINUS等にも暗黙のソート処理が実行されるので、極力使用を避けた方が良い。


● テーブルに別名を付ける
  テーブルに別命を付けると、解析速度が向上するので、別名を付けるようにする
 ○ select a.emp_id, a.emp_name from emp a;

 × select emp_id, emp_name from emp;


● ROWIDの使用を検討する

  ROWIDとは、データベース内のレコードのアドレスを表すOracleの内部的な管理情報です。
  その為、WHERE句にROWIDを使用すると、テーブルのレコードに最速でアクセスできます。

  但し、Export/Importや表の移動(alter table moveコマンド)などでROWIDは変更されてしまう為、ROWIDの使用は、SELECTでデータを取得後に再度アクセスする場合などに限定されます。

 例)データを検索して、そのレコードを更新する。
 select emp_id,salary,rowid from emp;

 update emp set salary = 250 where rowid = 'AAAF+OAAIAAABmMABL';

スポンサード リンク


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

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