我創建了一個索引視圖(MyView的)是由三列組成:SQL Server 2008 R2和執行計劃中的索引視圖
Table1_ID (int not null)
Object_CreationDate (datetime, null)
Objec_Count(bigint null)
我創建聚集唯一索引 IX_1兩個列:Table1_ID
而Object_CreationDate
我想運行兩個查詢:
1.
Select * from [dbo].MyView
where Table1_ID = 10
2.
Select * from [dbo].MyView
where Table1_ID = 10
AND Object_CreationDate <= GETDATE()
1-ST查詢運行快(即使DBCC DROPCLEANBUFFERS()),並通過使用MyView的和IX_1使用簡單的執行計劃
2-ND查詢運行沒有這麼快,因爲它使用「舊」執行計劃(通過三個表中的多個索引搜索和嵌套循環)
我誤解了這種情況。至於我,這是自然使用IX_1和MyView爲第2查詢。
此外,我等待第2個查詢以相同的速度運行,甚至比第1個更快,因爲它在聚簇索引中的where子句中使用兩列。
我試着運行第二個查詢with(index=IX_1)
並更新列的統計信息,但仍然有相同的執行計劃。
是否有可能強制使用sql MyView AND IX_1?
我驚訝,你知道管理工作室的這種特性。 – 2010-12-13 10:52:09