Sql-Server
分區掃描對大小數據的影響
我有一個表
SampleTable
,它在列上有一個聚集索引Date
,並且也在Date
列上分區。但是該Date
列是 typeDateTime
。從該表查詢時,即
Select * from SampleTable where Convert(Date,Date) >= Convert(Date,GETDATE())-1
…我將
Date
列轉換為Date
數據類型。這使我的搜尋謂詞在所有分區上搜尋。但是,將查詢更改為:
Select * from SampleTable where Date >= Convert(Date,GETDATE())-1
… 導致謂詞搜尋僅在符合條件的分區上進行搜尋。
我想了解查找操作的影響。當我的數據/日期範圍增加時,影響是線性的還是指數的?
該索引始終被使用。
將其視為不同的查詢。導航 B 樹以查找零行需要多少成本?這就是那些“額外分區”發生的事情。那些不包含您的範圍內的任何數據並且被您的第二個查詢替代方案跳過的那些。如果你沒有太多的分區,那麼這個額外的成本會非常低。但是隨著分區數量的增加,成本也會增加(如果範圍的選擇性很高,尤其是相對成本)。