いっつも忘れるのでいい加減Qiitaに書いとくことにした。初歩的な内容。
中間一致・後方一致のLIKE文
インデックスが使えないクエリ。
中間一致.
SELECT ID FROM USER WHERE USER_NAME LIKE '%岡賢%'
後方一致.
SELECT ID FROM USER WHERE USER_NAME LIKE '%岡賢一'
これはインデックスが使える。
前方一致.
SELECT ID FROM USER WHERE USER_NAME LIKE '長岡賢%'
インデックス列で演算をやっている
インデックスが使えないクエリ(PRICE列にインデックスが張られているものとする)。
インデックス列で演算をやっている.
SELECT NAME FROM GOODS WHERE PRICE * 10 > 100000
これはインデックスが使える(PRICE列にインデックスが張られているものとする)。
右側に式を書けばOK.
SELECT NAME FROM GOODS WHERE PRICE > 100000/10
IS NULLを使っている
PRICE列にインデックスが張られているものとする。
インデックス列に対してISNULL.
SELECT NAME FROM GOODS WHERE PRICE IS NULL
インデックス列に対して関数を使っている
PRICE列にインデックスが張られているものとする。
これに対して関数(MAX、MIN、LENGTH等)を使っている。
インデックス列に対して関数を使っている.
SELECT NAME FROM GOODS WHERE MAX(PRICE) = 100000
インデックス列に否定形を使っている
PRICE列にインデックスが張られているものとする。
これに対して否定形(<>、!=、NOT IN)を使っている。
インデックス列に対して否定形を使っている.
SELECT NAME FROM GOODS WHERE PRICE <> 100000