Sql-Server

分區掃描對大小數據的影響

  • December 9, 2019

我有一個表SampleTable,它在列上有一個聚集索引Date,並且也在Date列上分區。但是該Date列是 type DateTime

從該表查詢時,即

Select * from SampleTable where Convert(Date,Date) >= Convert(Date,GETDATE())-1

…我將Date列轉換為Date數據類型。這使我的搜尋謂詞在所有分區上搜尋。

但是,將查詢更改為:

Select * from SampleTable where Date >= Convert(Date,GETDATE())-1

… 導致謂詞搜尋僅在符合條件的分區上進行搜尋。

我想了解查找操作的影響。當我的數據/日期範圍增加時,影響是線性的還是指數的?

該索引始終被使用。

將其視為不同的查詢。導航 B 樹以查找零行需要多少成本?這就是那些“額外分區”發生的事情。那些不包含您的範圍內的任何數據並且被您的第二個查詢替代方案跳過的那些。如果你沒有太多的分區,那麼這個額外的成本會非常低。但是隨著分區數量的增加,成本也會增加(如果範圍的選擇性很高,尤其是相對成本)。

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