Sql-Server

在不重寫此查詢的情況下,有沒有辦法強制查詢優化器更好地估計所需的資源量,例如使用查詢提示?

  • October 19, 2019

行估計錯誤的執行計劃

我知道有幾種替代方法可以編寫此查詢,但我更好奇是否有另一種方法可以通過幫助引導優化器朝著正確的方向來提高性能?例如,我可以在這裡使用任何類型的查詢提示/選項來提高性能嗎?

目前它執行大約 40 分鐘並返回大約 30,000 條記錄。

注意:如果 2019 年的新功能適用於此處但不適用於 2008 R2,我也很感興趣(我知道兩者之間的一大區別是基數估計器)。

正如所寫的那樣,這個查詢必須比較每一對行,並且成本估計是相當準確的。

在受支持的 SQL Server 版本上,您可能會獲得併行計劃,或者存在強制執行並行計劃的未記錄查詢提示。

select t1.itemid, t2.itemid
from #temp T1  
inner join #temp as t2
 on t1.itemid like '%' + t2.itemid + '%'
 and t2.itemid <> t1.itemid
OPTION(USE HINT('ENABLE_PARALLEL_PLAN_PREFERENCE'))

引用自:https://dba.stackexchange.com/questions/251494