SQLを最適化する

LONERさん
LONERさん

SQLの作り方によって、レスポンスは大分左右される。わすれても検索できるように、ここにメモしておく。

インデックスの利用
インデックスを使う場合は、必ず 「列名 = 値」 という形にする。左側が数式になっていたりすると、インデックスが塚割らず、全件捜査となる。等価でなければ「列名 < 値」などとする。
列 = '%ABC' などの後方一致検索ではインデックスを検索せず、全件検索となる。できるだけ前方一致・完全一致で検索するのが速くするコツ。
ORACLE の場合(?)・・・等号と不等号の条件を AND で組み合わせて使う場合、等号の条件だけにインデックスが使われる。不等号と不等号の条件を AND で組み合わせて使う場合、最初に記述されている不等号条件だけにインデックスが使われる。

IS NULL, IS NOT NULL を単独で使うときは全件捜査となる。その場合は、なんでもいいので 条件をAND で追加する。
SELECT 文では「*」を避ける。SELECT の中で「*」を使用すると、参照形のSQL文ではすべてのフィールドを繰り替えしてコピーするらしい。(つまりリソースの無駄遣い)
LONERさんのブログ一覧