なぜサブクエリは接続クエリ(LEFTJOIN)より効率が低いのか
536 ワード
MySQLは4.1バージョンからサブクエリをサポートし、サブクエリを使用してSELECT文ネストクエリを行い、論理的に複数のステップが必要なSQL操作を一度に完了することができます.サブクエリは柔軟ですが、実行効率は高くありません.では、問題が来ました.サブクエリとは何ですか.なぜ効率が悪いのですか?≪サブクエリー|Sub Query|oem_src≫:内層クエリーの結果を外層クエリーの比較条件として使用します.
例:
最適化方法:
サブクエリの代わりにジョインクエリ(JOIN)を使用できます.ジョインクエリはテンポラリ・テーブルを作成する必要がないため、サブクエリよりも高速です.
例:
select goods_id,goods_name from goods where goods_id = (select max(goods_id) from goods);
サブクエリを実行する場合、MYSQLはテンポラリ・テーブルを作成する必要があり、クエリが完了してからこれらのテンポラリ・テーブルを削除する必要があるため、サブクエリの速度は一定の影響を受け、ここではテンポラリ・テーブルの作成と破棄のプロセスが1つ増えます.最適化方法:
サブクエリの代わりにジョインクエリ(JOIN)を使用できます.ジョインクエリはテンポラリ・テーブルを作成する必要がないため、サブクエリよりも高速です.