ホームページ > データベース > mysql チュートリアル > クロス適用と内部結合: 大規模なデータセットに対してクロス適用の方が優れた効率を実現できるのはどのような場合ですか?

クロス適用と内部結合: 大規模なデータセットに対してクロス適用の方が優れた効率を実現できるのはどのような場合ですか?

Susan Sarandon
リリース: 2025-01-20 11:27:11
オリジナル
381 人が閲覧しました

Cross Apply vs. Inner Join: When Does Cross Apply Offer Superior Efficiency for Large Datasets?

相互適用と内部結合: 大規模なデータセットのパフォーマンスの最適化

クロス適用は、内部結合では簡単に実現できない複雑なテーブルの関係や操作を扱う場合に特に役立ちます。 左側のテーブルのすべての行に対して、右側のテーブルから行が生成されます。

クロス適用と内部結合はどちらも同様の結果をもたらしますが、クロス適用は、特に大規模なデータセットを処理し、パーティショニングまたはページングを使用する場合に、優れた効率を示すことがよくあります。

クロス適用の主な利点は、ユーザー定義関数 (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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート