[英]Can Stats per partition prevent parameter sniffing problem when data varies by wide margin in partitions?
目前我們有一個數據倉庫,它保存來自多個租戶的數據。 SQL 服務器的版本為 2019。所有租戶數據庫的架構相同,所有租戶的數據都合並到數據倉庫中。 數據在租戶基礎上在數據倉庫中進行分區。 由於租戶之間的數據差異很大,因此新儀表板存在參數嗅探問題。 一些租戶的數據少於 10000 行,一些租戶的數據高達 500 萬行。 因此,如果執行計划是基於較小的租戶構建的,則儀表板性能對大租戶不利。
互聯網上的建議是要求使用重新編譯提示或優化提示等。但我對這個參數嗅探的基礎有疑問。 由於統計信息由 SQL 服務器在分區級別維護,此統計信息是否不用於查看構建的計划是否適合新的運行時值? 在執行之前,是否曾經比較基於編譯時間和運行時間構建的計划的統計信息,以查看它們是否有效以及相關的計划是否有效?
好心提醒。
參數用於您想要共享、重用的查詢計划時。 硬編碼導致查詢計划變化的標准是這里的基本正確答案。
即使“我們盡可能避免在代碼中使用動態 SQL”,您也應該在此處例外。
如果您最終沒有在查詢優化上花費太多時間,這幾乎是一樣的好。 或者
/* Dashboard: Sales Overview
Visual: Total Sales
TenantID: 12345 */
select sum(Sales) TotalSales
from T
where TenantId = @tenantId
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.