For Want Of A Better Word

[mysql]集合差を求める場合の処理速度比較(NOT IN(), NOT EXISTS, LEFT JOIN … IS NULL)

   

 

http://qiita.com/Hiraku/items/71873bf31e503eb1b4e1

こういう所とか

http://rzpg.blogspot.jp/2011/02/mysqlnot-innot-exists.html

こういう所で、集合差をとる場合(Aの集合には存在しないレコードをとると。)の処理のパターンが紹介されており、

それぞれ速度差があるということで、手元で試してみた。

 

状況として、「当月のアクティブユーザーで、先月アクセスしていないユーザー」というイメージ

※いちおうキャッシュしないように「SQL_NO_CACHE」で。。

結果

 

NOT IN   14.96秒

NOT EXISTS 11.76 秒

LEFT JOIN    5.05 秒

 

LEFT JOIN に対し、NOT EXISTS は2倍 、NOT IN は3倍という感じ。

LEFT JOIN is NULLがとりあえずの手という所でしょうか。

 

 

参考 SQL

NOT IN(…):

 

NOT EXISTS(….),

 

 

LEFT JOIN … IS NULL

 

 

 - mysql

  関連記事

mysql 内部結合・外部結合違い inner join,left join,right join

参考サイト]http://mathemathiko.hatenablog.com …

[mysql][db]データ増大に伴う、データ表示処理・データ蓄積処理の変更履歴…

背景 ログの蓄積について、とりあえずでやっていたら処理がドンドンおもくなっていき …

xamppの旧バージョンダウンロード

案件ごとにいろんなphp apacheのバージョンを組み合わせるのが面倒臭い。 …

[mysql]どういうSQL文のとき、どういうインデックスが使われるのか整理

mysqlのチューニングをしていて、どうしてもインデックスが、どの指定の時に何が …

【MySQL】query_logを取得した場合の速度影響

あくまでWEB画面表示について。 環境は下記。 Linux CentOs7.1 …