2012-09-11 10 views
9

私はcorrelated subqueriesと参加することができます知っています。しかし、どちらが速いのですか?黄金のルールはありますか、それとも両方を測定する必要がありますか?どちらが速いか:相関サブクエリまたは結合?

+1

クエリに基づいて測定する必要があります。データ、サイズ、スキーマによって異なります。つまり、黄金のルールはありません。 – Cfreak

+0

@Cfreak - 答えとして追加してください - 正しいですから。 – RQDQ

答えて

16

まず、相関サブクエリは実際には結合のタイプです。最高の実行計画を生み出すための黄金のルールはありません。パフォーマンスに関心がある場合は、さまざまなフォームを試して、効果的なものを確認する必要があります。または、少なくとも、その決定を下すための計画を見てください。

一般に、相関サブクエリはいくつかの理由で避けがちです。第一に、それらはほとんど常に相関なしで書くことができます。第2に、多くのクエリエンジンが(インデックスを使用していても)ネストループ結合に変換し、他の結合方法が優れている可能性があります。このような場合、相関サブクエリはクエリを並列化することを困難にします。第3に、相関サブクエリは通常、SELECT節またはWHERE節のいずれかにあります。私はすべてのテーブルがFROM節にあるのが好きです。

しかし、相関サブクエリは多くの場合、効率的なクエリの実行方法です。これは、特にIN句でサブクエリを使用する場合に当てはまります。だから、黄金のルールはありません。

関連する問題