次の2つの方法で同じクエリを実行できますが、結合がないため、#1の方が効率的ですか?
select table1.* from table1
inner join table2 on table1.key = table2.key
where table2.id = 1
select * from table1
where key = (select key from table2 where id=1)
これらは2つの異なることをしています。サブクエリによって複数の行が返された場合、2番目はエラーを返します。
実際には、table2(id)
またはtable2(id, key)
にインデックスがあり、それid
はで一意であると思いtable2
ます。その場合、両方がインデックスルックアップを実行し、パフォーマンスが非常に同等である必要があります。
そして、パフォーマンスの質問に対する一般的な答えは次のとおりです。データを使用してサーバーで試してみてください。これが、パフォーマンスの違いが環境に違いをもたらすかどうかを知る唯一の方法です。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加