私は一連の手順でパフォーマンスを改善することを調査してきましたが、最近、同僚がEXISTSの代わりにINNER JOINを使用するとパフォーマンスが大幅に向上したと述べました。
これがなぜなのかに関する調査の一環として、私はここで質問をするだろうと思いました。
そう:
そして、本当に、他のどんな経験も人々がこの質問に耐えるためにもたらすことができます。
他の可能なパフォーマンスの改善を示唆することなく、答えがこの質問に具体的に対処できれば幸いです。すでにかなりの成功を収めており、私はこの1つの項目に興味がありました。
どんな助けでも大歓迎です。
一般的に、INNER JOIN
とEXISTS
は異なるものです。
前者は両方のテーブルから重複と列を返し、後者は1つのレコードを返し、述語であるため、1つのテーブルのみからレコードを返します。
UNIQUE
列で内部結合を行うと、それらは同じパフォーマンスを示します。
(重複を取り除くために)DISTINCT
が適用されたレコードセットで内部結合を行う場合、EXISTS
は通常より高速です。
IN
およびEXISTS
句(等結合相関)は通常、いくつかのSEMI JOIN
アルゴリズムは、通常、いずれかのテーブルのDISTINCT
よりも効率的です。
私のブログでこの記事を参照してください。
多分そうでないかもしれません。