0
StoplightStatus評估的確定性函數
1 - Red
2 - Yellow
3 - Green
由於這是一個確定性函數...
CREATE FUNCTION dbo.udf_StoplightStatusRed()
RETURNS TINYINT
WITH SCHEMABINDING
AS
RETURN CAST(1 as TINYINT)
END
它是安全的做...
SELECT
[Status] = CASE StoplightStatusID WHEN dbo.udf_StoplightStatusRed() THEN 1 ELSE 0 END
FROM dbo.StoplightAudit
WHERE StopLightStatusID = dbo.udf_StoplightStatusRed()
查詢本身沒有按我知道,這沒什麼意義。我只是想確定,如果我這樣做,我的功能不被評估每一行。
我需要加入到很多其它表來獲取更多的信息。最好先在CTE中獲得所有的審計ID並加入,或者不要緊,因爲這些函數是確定性的?
檢查執行計劃。但是,SQL Server知道哪些功能是確定的,我100%確信它爲一個常數任何不依賴於行的值優化了。 – jods