Heim >Datenbank >MySQL-Tutorial >Wie können OUTER und CROSS APPLY SQL-Abfragen in realen Anwendungen verbessern?
Praktische Anwendungen von OUTER und CROSS APPLY in SQL-Abfragen
OUTER und CROSS APPLY verbessern die Effizienz und Lesbarkeit von SQL-Abfragen in verschiedenen realen Anwendungen erheblich. Hier einige anschauliche Beispiele:
1. Top-N-Rekorde pro Kategorie:
Die Verwendung von APPLY bietet Leistungsvorteile gegenüber verschachtelten Abfragen beim Extrahieren der obersten N Zeilen für jede Gruppe. Betrachten Sie dieses Beispiel:
<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. Verwendung tabellenwertiger Funktionen:
CROSS APPLY vereinfacht die Anwendung von Tabellenwertfunktionen auf einzelne Zeilen der äußeren Abfrage:
<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. Effiziente Alias-Wiederverwendung:
CROSS APPLY ermöglicht die effektive Wiederverwendung von Spaltenaliasen innerhalb einer einzelnen Abfrage:
<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. Optimierung der Aufhebung der Pivotierung der Spalte:
APPLY bietet eine elegante Lösung zum Aufheben der Pivotierung mehrerer Spaltengruppen aus Tabellen mit einer nicht normalisierten Struktur:
<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>
Das obige ist der detaillierte Inhalt vonWie können OUTER und CROSS APPLY SQL-Abfragen in realen Anwendungen verbessern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!