相互適用と内部結合: 大規模なデータセットのパフォーマンスの最適化
クロス適用は、内部結合では簡単に実現できない複雑なテーブルの関係や操作を扱う場合に特に役立ちます。 左側のテーブルのすべての行に対して、右側のテーブルから行が生成されます。
クロス適用と内部結合はどちらも同様の結果をもたらしますが、クロス適用は、特に大規模なデータセットを処理し、パーティショニングまたはページングを使用する場合に、優れた効率を示すことがよくあります。
クロス適用の主な利点は、ユーザー定義関数 (UDF) なしで右側のテーブルとして機能し、さまざまな状況で柔軟性を提供できることです。
パフォーマンスの違いを強調するために、2,000 万レコードを含む「マスター」テーブルを使用したシナリオを調べてみましょう。 より小さい「t」テーブル内の各レコードの最後の 3 行を取得する内部結合クエリには約 30 秒かかります。
<code class="language-sql">WITH q AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY id) AS rn FROM master ), t AS ( SELECT 1 AS id UNION ALL SELECT 2 ) SELECT * FROM t JOIN q ON q.rn <= t.id</code>
ただし、同等の相互適用クエリはほぼ瞬時に完了します。
<code class="language-sql">WITH t AS ( SELECT 1 AS id UNION ALL SELECT 2 ) SELECT * FROM t CROSS APPLY ( SELECT TOP (t.id) m.* FROM master m ORDER BY id ) q</code>
この劇的なパフォーマンスの違いは、大規模なデータセット内で複雑なデータ操作を処理する場合のクロス適用の効率性の利点を強調しています。
以上がクロス適用と内部結合: 大規模なデータセットに対してクロス適用の方が優れた効率を実現できるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。