SQLチューニング
SQLのチューニング をする際に、チェックする観点を掲載します。 最低限 、これだけは チェックして欲しい 内容です。 これらをチェックするには、 人・工数・決断 を必要とします。 開発メンバーの士気は下がり、場合によってはプライドすらも 傷つけます。 時間が無いのに、新たな作業を言い渡される訳ですから・・・ だ・か・ら、納期ギリギリでは「つらい」のです。 ※しかし、港は無表情で作業の依頼を指示します。 (まぁ、殴られたり、刺されたりした事は無いので・・・) どうぞ参考にして下さい。 【チェック内容】 01.サブクエリを引数に取る場合、IN述語よりもEXISTS述語を 使っているか SELECT name FROM Personnel WHERE birthday IN (SELECT birthday FROM Celebrities); ▼ SELECT P.name FROM Personnel AS P WHERE EXISTS (SELECT * FROM Clelebrities AS C WHERE P.birthday = C.birthday); 02.IN述語やCASEの引数リストの順序を考慮しているか? (最もありそうなキーを左から記述) SELECT * FROM 住所 WHERE prefecture IN ('東京', '大阪', '鳥取', '徳島'); ※IN は、左から右へ引数を評価し、見つかった時点で true を返しそれより後の引数は見ない 03.EXISTS述語のサブクエリ内では、SELECT * を使っているか? SELECT …. WHERE EXISTS (SELECT * FROM …) ※オプティマイザにどの列を使うのか選択を委ねる 04.3つ以上のテーブルを結合させる時は冗長な結合条件を 記述しているか SELECT * FROM Table1 a, Table2 b, Table3 c WHERE a.common = b.common