北京北大青鳥學(xué)校指導(dǎo)教學(xué):
在SQL Server中,為了查詢性能的優(yōu)化,有時(shí)我們就需要對(duì)數(shù)據(jù)表通過建立索引的方式,目的主要是根據(jù)查詢要求,迅速縮小查詢范圍,避免全表掃描。
索引有兩種類型,分別是聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclustered index,也稱非聚類索引、非簇集索引)。下面,北京北大青鳥學(xué)校為大家介紹一下這兩種索引的定義。
聚集索引在一個(gè)表中只能有一個(gè),默認(rèn)情況下在主鍵建立的時(shí)候創(chuàng)建,它是規(guī)定數(shù)據(jù)在表中的物理存儲(chǔ)順序,我們也可以取消主鍵的聚集索引,所以必須考慮數(shù)據(jù)庫可能用到的查詢類型以及使用的最為頻繁的查詢類型,對(duì)其最常用的一個(gè)字段或者多個(gè)字段建立聚集索引或者組合的聚集索引,它就是SQL Server會(huì)在物理上按升序(默認(rèn))或者降序重排數(shù)據(jù)列,這樣就可以迅速的找到被查詢的數(shù)據(jù)。
非聚集索主要是數(shù)據(jù)存儲(chǔ)在一個(gè)地方,索引存儲(chǔ)在另一個(gè)地方,索引帶有指針指向數(shù)據(jù)的存儲(chǔ)位置。索引中的項(xiàng)目按索引鍵值的順序存儲(chǔ),而表中的信息按另一種順序存儲(chǔ)?梢栽谝粋(gè)表格中使用高達(dá)249個(gè)非聚集的索引,在查詢的過程中先對(duì)非聚集索引進(jìn)行搜索,找到數(shù)據(jù)值在表中的位置,然后從該位置直接檢索數(shù)據(jù)。這使非聚集索引成為精確匹配查詢的最佳方法,因?yàn)樗饕枋霾樵兯阉鞯臄?shù)據(jù)值在表中的精確位置的條目。 (北京北大青鳥學(xué)校)