相関サブクエリを実行して参加できることはわかっています。しかし、どちらが速いですか?ゴールデンルールはありますか、それとも両方を測定する必要がありますか?
質問する
8912 次
1 に答える
28
まず、相関サブクエリは実際には一種の結合です。どちらが最良の実行計画を生み出すかについての黄金のルールはありません。パフォーマンスに関心がある場合は、さまざまなフォームを試して、何が最適かを確認する必要があります。または、少なくとも、その決定を下すために実行計画を見てください。
一般に、私はいくつかの理由で相関サブクエリを避ける傾向があります。まず、ほとんどの場合、相関関係なしで記述できます。次に、多くのクエリエンジンは、それらをネストされたループ結合に変換し(インデックスを使用しますが)、他の結合戦略の方が優れている場合があります。このような場合、相関するサブクエリにより、クエリを並列化することが困難になります。第3に、相関サブクエリは通常、SELECT句またはWHERE句のいずれかで使用されます。すべてのテーブルをFROM句に含めるのが好きです。
ただし、MySQLでは、相関サブクエリがクエリを実行する最も効率的な方法であることがよくあります。IN
これは、句でサブクエリを使用する場合に特に当てはまります。したがって、黄金律はありません。
于 2012-09-11T19:23:07.537 に答える