ホームページ > データベース > mysql チュートリアル > OUTER および CROSS APPLY は実際のアプリケーションで SQL クエリをどのように強化できるのでしょうか?

OUTER および CROSS APPLY は実際のアプリケーションで SQL クエリをどのように強化できるのでしょうか?

Linda Hamilton
リリース: 2025-01-10 07:47:41
オリジナル
861 人が閲覧しました

How Can OUTER and CROSS APPLY Enhance SQL Queries in Real-World Applications?

SQL クエリにおける OUTER および CROSS APPLY の実践的な応用

OUTER および CROSS APPLY は、現実世界の多様なアプリケーションにおける SQL クエリの効率と可読性を大幅に向上させます。 以下にいくつかの具体的な例を示します:

1. カテゴリごとの上位 N レコード:

APPLY を使用すると、各グループの上位 N 行を抽出するときに、ネストされたクエリよりもパフォーマンスが向上します。 次の例を考えてみましょう:

SELECT pr.name,
       pa.name
FROM   sys.procedures pr
       OUTER APPLY (SELECT TOP 2 *
                    FROM   sys.parameters pa
                    WHERE  pa.object_id = pr.object_id
                    ORDER  BY pr.name) pa
ORDER  BY pr.name,
          pa.name;
ログイン後にコピー

2.テーブル値関数の使用:

CROSS APPLY は、外部クエリの個々の行へのテーブル値関数の適用を簡素化します。

SELECT *
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);
ログイン後にコピー

3. エイリアスの効率的な再利用:

CROSS APPLY を使用すると、単一のクエリ内で列のエイリアスを効果的に再利用できます。

SELECT number,
       doubled_number,
       doubled_number_plus_one
FROM master..spt_values
CROSS APPLY (SELECT 2 * CAST(number AS BIGINT)) CA1(doubled_number)  
CROSS APPLY (SELECT doubled_number + 1) CA2(doubled_number_plus_one);
ログイン後にコピー

4. 列のアンピボットの合理化:

APPLY は、正規化されていない構造を持つテーブルから複数の列グループをアンピボットするための洗練されたソリューションを提供します。

SELECT Id,
       Foo,
       Bar,
       GrpName
FROM   T
       CROSS APPLY (VALUES('1', Foo1, Bar1),
                          ('2', Foo2, Bar2),
                          ('3', Foo3, Bar3)) V(GrpName, Foo, Bar);
ログイン後にコピー

以上がOUTER および CROSS APPLY は実際のアプリケーションで SQL クエリをどのように強化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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