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 ?
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 :
<code class="language-sql">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;</code>
2. Utilisation de fonctions table :
CROSS APPLY simplifie l'application de fonctions table à des lignes individuelles de la requête externe :
<code class="language-sql">SELECT * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);</code>
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 :
<code class="language-sql">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);</code>
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 :
<code class="language-sql">SELECT Id, Foo, Bar, GrpName FROM T CROSS APPLY (VALUES('1', Foo1, Bar1), ('2', Foo2, Bar2), ('3', Foo3, Bar3)) V(GrpName, Foo, Bar);</code>
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!