SQLのinとexistsの効率って?
広告は適当。
SQLを使っていて、基本的に大きなテーブルをチェックするときは
DB効率上がってるんだから、内部で最適化されてたりして、と思って記事を探したらこんなのが。
https://blog.withonoware.co.jp/tech/2017/09/24/%E3%80%8Enot-in%E3%80%8F%E3%80%8Enot-exists%E3%80%8F%E3%81%AE%E6%A4%9C%E8%A8%BC/
ここによると、「NOT IN」と「NOT EXISTS」ですらコストが等価ってなりました。
もっと大容量だと話は違うかもしれませんが、今の最適度合いからしたらそうだよなあ、と思いました。
そのうち時間を見つけて検証してみたいと思います。
広告は適当。
SQLを使っていて、基本的に大きなテーブルをチェックするときは
in (select xxx from xxx)で頑張るのではなく、
exists (select 1 from xxx)ってやるんだよ、みたいな頭で居ました。そしてSQLのQAをしてて今回もそのコメントを書こうとして、
DB効率上がってるんだから、内部で最適化されてたりして、と思って記事を探したらこんなのが。
https://blog.withonoware.co.jp/tech/2017/09/24/%E3%80%8Enot-in%E3%80%8F%E3%80%8Enot-exists%E3%80%8F%E3%81%AE%E6%A4%9C%E8%A8%BC/
ここによると、「NOT IN」と「NOT EXISTS」ですらコストが等価ってなりました。
もっと大容量だと話は違うかもしれませんが、今の最適度合いからしたらそうだよなあ、と思いました。
そのうち時間を見つけて検証してみたいと思います。
コメント