首頁 > 資料庫 > mysql教程 > OUTER 和 CROSS APPLY 如何增強實際應用程式中的 SQL 查詢?

OUTER 和 CROSS APPLY 如何增強實際應用程式中的 SQL 查詢?

Linda Hamilton
發布: 2025-01-10 07:47:41
原創
834 人瀏覽過

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

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板