我有以下疑問。其中一個在 select 陳述句中使用標量 UDF,另一個在 select 陳述句中使用相關子查詢。
Select col1, col2, (select col3 from table2 t2 where t1.col1=t2.col1)
From table1 t1
Select col1, col2, dbo.getCol3Value(col1)
From table1
Create Function dbo.getCol3Value(@col1 as int)
returns int
As
declare @retCol1 int
select @returnCol1 = col3
from table2
Where col1= @col1
return @retCol1
我在網上閱讀有關如何不建議標量 UDF 的資訊,因為它們會導致很多性能問題。SQL 服務器優化器如何在后臺處理我上面列出的查詢?撰寫此類查詢的更好方法是什么?
編輯:我應該說清楚一些事情。子查詢或函式在任何時候都只會回傳一個值。另外,我需要從 table2 中獲取 table1 中每一行的值。
uj5u.com熱心網友回復:
雖然未行內的 T-SQL 標量 UDF 歷來是性能問題的問題根源,但工程團隊最近進行了行內一些 UDF 的作業,以使這對您來說不是問題。以下是解釋支持情況的檔案:UDF 行內上的 SQL 檔案
這篇學術論文包含更多關于創新的細節,如果你有興趣:FROID VLDB Paper
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340099.html
標籤:sql sql-server 查询语句 报告服务 姐姐
