ホームページ > データベース > mysql チュートリアル > IN 句内の MySQL サブクエリがパフォーマンスの問題を引き起こすのはなぜですか?

IN 句内の MySQL サブクエリがパフォーマンスの問題を引き起こすのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-29 05:22:25
オリジナル
658 人が閲覧しました

Why is my MySQL subquery in an IN clause causing performance issues?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート