OUTER和CROSS APPLY在SQL中的實際應用
OUTER和CROSS APPLY是SQL中兩個非常有價值的結構,它們可以增強查詢的靈活性和效能。雖然經典範例看起來比較深奧,但這些結構在各種場景中都有實際應用。
1. 高效率取得相關數據
假設您有兩個表:Contacts表包含聯絡人詳細信息,CommunicationEntries表包含通訊管道(電話、傳真、電子郵件)。要檢索聯絡人資訊和相關的通訊詳細信息,您可以使用CROSS APPLY如下所示:
<code class="language-sql">SELECT c.name, ce.communicationType, ce.channel FROM Contacts c CROSS APPLY ( SELECT * FROM CommunicationEntries ce WHERE ce.contactId = c.contactId ) ce;</code>
2. 利用表值函數
表值函數 (TVF) 提供了一種動態產生表格資料的方法。 CROSS APPLY可讓您為外部查詢中的每一行呼叫TVF。例如,要顯示正在執行的查詢的查詢計劃:
<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. 高效率解旋資料
在規範化的表結構中,資料儲存在列中。解旋會將此資料展平,為每個屬性建立行。 OUTER APPLY 能夠有效率地進行解旋,特別是在需要解旋多組列時。考慮以下場景:
以上是OUTER和CROSS APPLY如何增強SQL查詢彈性與效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!