LoginSignup
0
1

More than 1 year has passed since last update.

パフォーマンスの良いSQL

Posted at

今回はパフォーマンスの良い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回です。
テーブルを参照する回数に差異があります。
これの不思議なところは、データ量の多い少ないに関わらず①の文のほうが圧倒的に処理が速いところです。
先に絞り込みをして探した方が確かに早いもんなぁと初めのころは思いました。

最後に

疲れがたまる木曜日、今日も頑張って乗り切った。。。
皆さんも体調に気を付けて無理せず頑張りましょう。
他にも学んだことがあったら追記していきます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1