查詢類型和索引
當您考慮是否要在資料行上建立索引時,請先評估要如何在查詢中使用資料行。下表描述索引非常有用的查詢類型。
[!附註]
在資料表中的範例是以 AdventureWorks2008R2 範例資料表為基礎。當您在 SQL Server Management Studio 中執行範例時,您可以顯示實際的執行計畫,以檢視查詢最佳化工具所選取的索引。如需詳細資訊,請參閱<如何:顯示實際執行計畫>。
資料行述詞為下列其中一個的查詢 |
查詢描述和範例 |
要考慮的索引 |
---|---|---|
完全符合特定值 |
所謂完全符合的搜尋,是指查詢使用 WHERE 陳述式來指定一個具有指定值的資料行項目。例如:
|
在 BusinessEntityID 資料行上的非叢集或叢集索引。 |
與 IN (x,y,z) 清單中的值完全相符 |
搜尋與指定的值清單中完全相符的值。例如:
|
在 BusinessEntityID 資料行上的非叢集或叢集索引。 |
範圍值 |
針對查詢所指定的介於兩個值之間的值項目搜尋某個範圍的值。例如:
或
|
在 ProductModelID 資料行上的叢集或非叢集索引。 |
聯結兩個資料表 |
針對與依據聯結述詞的資料表中的資料列相符的另一個資料表,搜尋其資料列。例如:
|
在 ProductID 與 ProductAssemblyID 資料行上的非叢集或叢集索引。 |
LIKE 比較 |
搜尋以特定字元字串 (例如 'abc%) 開頭的相符資料列。 例如:
|
在 Name 資料行上的非叢集或叢集索引。 |
排序或彙總 |
需要隱含或明確的排序順序或彙總 (GROUP BY)。例如:
|
在已排序或彙總的資料行上之非叢集或叢集索引。 對於排序資料行,請考慮指定資料行的 ASC 或 DESC。 |
PRIMARY KEY 或 UNIQUE 條件約束 |
搜尋插入與更新作業中重複的新索引鍵值,以強制使用 PRIMARY KEY 與 UNIQUE 條件約束。例如:
|
定義在條件約束中的資料行之叢集或非叢集索引。 |
在 PRIMARY KEY/FOREIGN KEY 關聯性中的 UPDATE 或 DELETE 作業 |
在更新或刪除作業中搜尋資料列,其中資料行參與有或沒有 CASCADE 選項的 PRIMARY KEY/FOREIGN KEY 關聯性。 |
在外部索引鍵資料行上的非叢集或叢集索引。 |
資料行是在選取清單中不在述詞中。 |
包含選取清單中的一或多個資料行,未用於搜尋和查閱。例如:
|
在 INCLUDE 子句中指定含有 FileName 的非叢集索引。 |