OUTER 和 CROSS APPLY 在 SQL 查詢中的實際應用
OUTER 和 CROSS APPLY 顯著提高了各種實際應用程式中的 SQL 查詢效率和可讀性。 以下是一些說明範例:
1。 每個類別的前 N 筆記錄:
在擷取每組的前 N 行時,使用 APPLY 比巢狀查詢具有效能優勢。 考慮這個例子:
<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。使用表值函數:
CROSS APPLY 簡化了表值函數對外部查詢的各個行的應用:
<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。 高效率的別名重複使用:
CROSS APPLY 允許在單一查詢中有效地重複使用列別名:
<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。 簡化列逆透視:
APPLY 提供了一個優雅的解決方案,用於從具有非標準化結構的表中取消透視多個列組:
<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>
以上是OUTER 和 CROSS APPLY 如何增強實際應用程式中的 SQL 查詢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!