MySQL で WHERE 句でサブクエリを使用すると非常に遅いのはなぜですか?
MySQL パフォーマンスへの影響: WHERE 句のサブクエリ
重複データを扱う場合、問題のある行を特定して検査する必要があります。ただし、WHERE 句でサブクエリを使用する単純なクエリでは、重大なパフォーマンスの問題が発生する可能性があります。
元のクエリ:
SELECT * FROM some_table WHERE relevant_field IN ( SELECT relevant_field FROM some_table GROUP BY relevant_field HAVING COUNT(*) > 1 )
relevant_field のインデックスにもかかわらず、これはクエリの実行が非常に遅い。その理由は、サブクエリの相関特性にあります。
相関サブクエリとパフォーマンス:
相関サブクエリは、外部クエリの列を参照するサブクエリです。この場合、サブクエリはテーブル内で複数回出現する RELATED_FIELD 値を選択します。外側のクエリの行ごとにサブクエリが実行され、同じクエリが複数回実行されます。これにより、パフォーマンスが低下します。
解決策としての非相関サブクエリ:
パフォーマンスの問題を解決するには、相関サブクエリを非相関サブクエリに変換することをお勧めします。 1つ。これは、サブクエリからすべての列を選択し、エイリアスを割り当てることで実現できます。
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 )
このクエリの実行速度が大幅に向上しました。サブクエリが関連付けられなくなったためです。 1 回の実行で複数回発生する RELATED_FIELD 値を計算し、それらをサブクエリ エイリアスに保存し、メイン クエリで使用します。
結論:
相関サブクエリと非相関サブクエリの違いを理解することは、MySQL のパフォーマンスを最適化するために重要です。相関サブクエリを非相関サブクエリに変換すると、WHERE 句のサブクエリに依存するクエリの速度が大幅に向上します。
以上がMySQL で WHERE 句でサブクエリを使用すると非常に遅いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Alter Tableステートメントを使用してMySQLのテーブルをどのように変更しますか?

Linuxでmysqlを実行します(phpmyAdminを使用してポッドマンコンテナを使用して/なし)

MACOSで複数のMySQLバージョンを実行する:ステップバイステップガイド

人気のあるMySQL GUIツール(MySQL Workbench、PhpMyAdminなど)は何ですか?

MySQL接続用のSSL/TLS暗号化を構成するにはどうすればよいですか?
