MySQL - IN 句のパフォーマンスが低下するサブクエリ相関
指定されたクエリ。 IN 句で重大なパフォーマンスの問題が発生しています。サブクエリ自体は高速に実行されますが、IN 句のクエリにはかなり時間がかかります。
速度が遅い理由
速度の低下は、サブクエリの相関関係によって引き起こされます。相関クエリでは、サブクエリは外部クエリの列を参照するため、外部クエリの実行に依存します。その結果、外部テーブルの各行はサブクエリの個別の実行をトリガーします。
解決策
この問題を解決するには、相関サブクエリを非相関サブクエリ内のすべての列を選択します。これにより、外側のクエリへの依存関係がなくなり、パフォーマンスが大幅に向上します:
SELECT * FROM ( SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1 ) AS subquery
最終クエリ
変更されたクエリは次のようになります:
SELECT * FROM some_table WHERE relevant_field IN ( SELECT * FROM ( SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1 ) AS subquery )
この非相関クエリは、元の相関クエリよりもはるかに高速に実行されます。
以上がIN 句内の MySQL サブクエリがパフォーマンスの問題を引き起こすのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。