北大青鳥(niǎo)教學(xué):SQL Server中使用索引需要注意的問(wèn)題(上)

在上一篇內(nèi)容中,北大青鳥(niǎo)北京學(xué)校老師介紹了索引的兩種類型:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index,也稱非聚類索引、非簇集索引)。這篇文章,我們將介紹一下在使用中需要注意的問(wèn)題。

我們?cè)谶x擇創(chuàng)建聚集索引的時(shí)候要注意以下幾個(gè)方面:
1) 對(duì)表建立主鍵時(shí),就會(huì)為主鍵自動(dòng)添加了聚集索引,如自動(dòng)編號(hào)字段,而我們沒(méi)有必要把聚集索引浪費(fèi)在主鍵上,除非你只按主鍵查詢,所以會(huì)把聚集索引設(shè)置在按條件查詢頻率最高的那個(gè)字段或者組合的字段。

2) 索引的建立要根據(jù)實(shí)際應(yīng)用的需求來(lái)進(jìn)行,并非是在任何字段上建立索引就能提高查詢速度。聚集索引建立遵循下面幾個(gè)原則:
包含大量非重復(fù)值的列。
使用下列運(yùn)算符返回一個(gè)范圍值的查詢:BETWEEN、>、>=、< 和 <=。 
被連續(xù)訪問(wèn)的列。
返回大型結(jié)果集的查詢。 (北大青鳥(niǎo)北京學(xué)校)
經(jīng)常被使用聯(lián)接或 GROUP BY 子句的查詢?cè)L問(wèn)的列;一般來(lái)說(shuō),這些是外鍵列。對(duì)ORDER BY 或 GROUP BY 子句中指定的列進(jìn)行索引,可以使 SQL Server 不必對(duì)數(shù)據(jù)進(jìn)行排序,因?yàn)檫@些行已經(jīng)排序。這樣可以提高查詢性能。

OLTP 類型的應(yīng)用程序,這些程序要求進(jìn)行非?焖俚膯涡胁檎(一般通過(guò)主鍵)。應(yīng)在主鍵上創(chuàng)建聚集索引。 

3) 在聚集索引中按常用的組合字段建立索引,形成復(fù)合索引,一般在為表建立多個(gè)主鍵的時(shí)候就會(huì)產(chǎn)生,如果一個(gè)表中的數(shù)據(jù)在查詢時(shí)有多個(gè)字段總是同時(shí)出現(xiàn)則這些字段就可以作為復(fù)合索引,這樣能形成索引覆蓋,提高where語(yǔ)句的查詢效率。 (北大青鳥(niǎo)北京學(xué)校)

北大青鳥(niǎo)網(wǎng)上報(bào)名
北大青鳥(niǎo)招生簡(jiǎn)章