今回はパフォーマンスの良いSQLの一例を紹介します。
※今回は基礎がわかっている人向けです。基礎部分は別途記事にするのでお待ちください。
どちらがパフォーマンスが良い?
①SELECT goods FROM goods g
INNER JOIN goods_b gb on g.goods = gb.goods
WHERE g.stock = 10 and gb.type = 3
GROUP BY g.goods
②SELECT g.goods FROM goods AS g
WHERE g.goods =10
AND EXISTS(
SELECT * FROM goods_b gb
WHERE gb.type = 3
AND c.goods = gb.goods )
出力結果は同じです。
ヒントは優先順です。
優先順のことが書かれたわかりやすい記事です。ブックマーク必須
https://qiita.com/suzukito/items/edcd00e680186f2930a8
答え
①です。
これはSELECTされる回数によって変わるという問題です。
①は1回に対し、②は2回です。
テーブルを参照する回数に差異があります。
これの不思議なところは、データ量の多い少ないに関わらず①の文のほうが圧倒的に処理が速いところです。
先に絞り込みをして探した方が確かに早いもんなぁと初めのころは思いました。
最後に
疲れがたまる木曜日、今日も頑張って乗り切った。。。
皆さんも体調に気を付けて無理せず頑張りましょう。
他にも学んだことがあったら追記していきます。