プログラムは同じ処理でも色んな書き方ができます。
SQLも同様ですが、
大量データを扱う以上速度が課題に上がることが多いため、
速い処理が大正義の1つでしょう。
今回は処理を速くするためのSQL書き換えポイントを紹介します。
(DBの違いや状況によっては効果が小さい場合があります。)
基本は「無駄な処理を省くこと」
SQL処理が遅いと思った時にまず気にするべきことは
「無駄な処理を省くこと」です。
扱うデータが多くなればなるほど無駄な処理による処理時間が肥大するため、
SQLを書く時点から気を付けるべきです。
主な書き換えポイントとしては以下があります。
・そもそも不要なデータを取得しないようにする
念のため取得するなんてのは悪です。
・結合テーブルの条件はなるだけWHERE句ではなくON句に書く
絞り込みした後に結合してくれるようです。
・複雑な部分をWITH句や一時テーブルで分ける
見た目が整理され問題発見にも役立ちます。
その他の細かい書き換えポイント
致命的に遅いSQLについては
先述の書き換えだけでも効果があるかと思います。
更にもう少し速くしたい!というのであれば、
以下のポイントに気を付けてみてください。
・「SELECT」等のキーワードは大文字で書く
・不要な重複削除をしない
・WHERE句のサブクエリはJOINする形に書き換える
・LIKEや「*」といったワイルドカードをなるだけ使わない
・テーブルに別名を付けるようにする
・データ型を明示する(VARCHARなら「’0’」にする等)
それでもダメなら
細かいテクニックは調べると他にも様々出てきます。
もし書き換えても処理が遅い場合はインデックスの設定などを検討してみましょう。
データベースは大量データを扱ってこそ輝くものなので、
高速化のテクニックは優先度高めでマスターしたいですね。