有關SQL中更新語句性能的一個簡短問題。 假設我在表中有100萬行,並且我想更新其中一半的日期列。SQL更新性能
我的更新
UPDATE Table SET DATE = Date.dbo.fn_GetAlwaysUTCDate() WHERE (HALF THE ROWS)
在上面的查詢,將功能Date.dbo.fn_GetAlwaysUTCDate()
被稱爲50萬次?我知道如果它在WHERE
它將在每一行被調用,因爲它不是編譯器/優化器眼中的確定性函數。
有關SQL中更新語句性能的一個簡短問題。 假設我在表中有100萬行,並且我想更新其中一半的日期列。SQL更新性能
我的更新
UPDATE Table SET DATE = Date.dbo.fn_GetAlwaysUTCDate() WHERE (HALF THE ROWS)
在上面的查詢,將功能Date.dbo.fn_GetAlwaysUTCDate()
被稱爲50萬次?我知道如果它在WHERE
它將在每一行被調用,因爲它不是編譯器/優化器眼中的確定性函數。
請試試這個。這種方式只能調用一次。
Declare @dt datetime = Date.dbo.fn_GetAlwaysUTCDate()
UPDATE Table SET DATE = @dt WHERE (HALF THE ROWS)
任何想法在一般情況下會有多快?我正在這樣做,只是不確定它是否會帶來任何性能提升 –
爲什麼不嘗試在你的機器上進行配置和測試? –
比較兩種SQL的預計執行計劃。那會告訴你 – Hiten004
UDF是不是預先評估(折),因此它必須在外部的行集..每一行如果你想要的行爲,一旦把它和存儲其可變回報執行。 –
這就是我所做的,我只是不是100%肯定它是值得的! –