SQLチューニング
SQLを速くするぞ
https://mickindex.sakura.ne.jp/database/db_optimize.html
ポイント
- サブクエリを引数に取る場合、IN述語よりもEXISTS述語を使う
- BETWEENはおしゃれなアクセサリ
- EXISTS述語のサブクエリ内では、SELECT * を使う
- 極値関数でインデックスを利用する
- 行数を数えるときはCOUNT(*)よりもCOUNT(列名)を使う
- GROUP BY 句でインデックスを利用する
- ORDER BY 句でインデックスを利用する
- UNION、INTERSECT、EXCEPT には ALL を付ける
- 実はインデックスが使用されていないという罠。
- 行ポインタによるアクセスが最速
- ワイルドカードは使わない
- 列番号は使わない
- 表に別名をつける
- 暗黙の型変換を回避する
- IN述語の引数リストには、最もありそうなキーを左寄せする
- ビューを濫用してはいけません