Maison > base de données > tutoriel mysql > Comment OUTER et CROSS APPLY peuvent-ils améliorer les requêtes SQL dans les applications du monde réel ?

Comment OUTER et CROSS APPLY peuvent-ils améliorer les requêtes SQL dans les applications du monde réel ?

Linda Hamilton
Libérer: 2025-01-10 07:47:41
original
862 Les gens l'ont consulté

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

Applications pratiques de OUTER et CROSS APPLY dans les requêtes SQL

OUTER et CROSS APPLY améliorent considérablement l'efficacité et la lisibilité des requêtes SQL dans diverses applications du monde réel. Voici quelques exemples illustratifs :

1. Top N enregistrements par catégorie :

L'utilisation d'APPLY offre des avantages en termes de performances par rapport aux requêtes imbriquées lors de l'extraction des N premières lignes de chaque groupe. Prenons cet exemple :

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;
Copier après la connexion

2. Utilisation de fonctions table :

CROSS APPLY simplifie l'application de fonctions table à des lignes individuelles de la requête externe :

SELECT *
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);
Copier après la connexion

3. Réutilisation efficace des alias :

CROSS APPLY permet la réutilisation efficace des alias de colonnes au sein d'une même requête :

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);
Copier après la connexion

4. Colonne rationalisée sans pivotement :

APPLY fournit une solution élégante pour annuler le pivotement de plusieurs groupes de colonnes à partir de tables avec une structure non normalisée :

SELECT Id,
       Foo,
       Bar,
       GrpName
FROM   T
       CROSS APPLY (VALUES('1', Foo1, Bar1),
                          ('2', Foo2, Bar2),
                          ('3', Foo3, Bar3)) V(GrpName, Foo, Bar);
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal