Praktische Anwendungen von OUTER/CROSS APPLY in SQL
OUTER und CROSS APPLY sind leistungsstarke SQL-Operatoren, die erweiterte Datenmanipulationsmöglichkeiten bieten. Dieser Artikel verdeutlicht ihre praktische Anwendung anhand von Beispielen aus der Praxis.
Szenario 1: Top-N-Rekorde pro Kategorie
OUTER APPLY erweist sich als unschätzbar wertvoll für das Abrufen der obersten N Zeilen innerhalb jeder Gruppe. Erwägen Sie, die beiden wichtigsten Parameter für jede gespeicherte Prozedur zu finden:
<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>
Szenario 2: Verwendung von Tabellenwertfunktionen
CROSS APPLY erleichtert die Ausführung von Tabellenwertfunktionen für jede Zeile in der Primärabfrage. Zum Beispiel:
<code class="language-sql">SELECT * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);</code>
Dies gilt effizient sys.dm_exec_query_plan
für jede Zeile ab sys.dm_exec_query_stats
.
Szenario 3: Berechnete Spalten wiederverwenden
APPLY ermöglicht die Wiederverwendung berechneter Spaltenaliase und generiert mehrere abgeleitete Spalten aus einem einzigen Ausdruck:
<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>
Szenario 4: Aufheben der Pivotierung mehrerer Spaltengruppen
Bei Datensätzen, die gegen 1NF verstoßen, hebt APPLY effizient die Pivotierung mehrerer Spaltengruppen gleichzeitig auf:
<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>
Die Beherrschung von OUTER/CROSS APPLY verbessert die Fähigkeiten zur SQL-Datenbearbeitung erheblich und ermöglicht effiziente Lösungen für komplexe Datenherausforderungen.
Das obige ist der detaillierte Inhalt vonWie kann OUTER/CROSS APPLY reale Herausforderungen bei der SQL-Datenmanipulation lösen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!