【正文】
ex 計(jì)算符可以是 0 ,1, 指定的一個(gè)或者多個(gè)索引名字。對(duì)于 0 ,1 的意義如下:如果存在聚集索引,則 index(0) 強(qiáng)制執(zhí)行聚集索引掃描,index(1) 強(qiáng)制執(zhí)行聚集索引掃描或查找(使用性能最高的一種)。如果不存在聚集索引,則 index(0) 強(qiáng)制執(zhí)行表掃描,index(1) 被解釋為錯(cuò)誤??偨Y(jié)知識(shí)點(diǎn):簡(jiǎn)單來(lái)說(shuō),我們可以這么理解:sql server 對(duì)于每一條查詢語(yǔ)句。會(huì)根據(jù)實(shí)際索引情況(sysindexes 系統(tǒng)表中存儲(chǔ)這些信息),分析每種組合可能的成本。然后選擇它認(rèn)為成本最小的一種。作為它實(shí)際執(zhí)行的計(jì)劃。成本代價(jià)計(jì)算的一個(gè)主要組成部分是邏輯i/o的數(shù)量,特別是對(duì)于單表的查詢。and 操作要滿足所有條件,這樣,經(jīng)常會(huì)要求對(duì)幾個(gè)數(shù)據(jù)集作交集。數(shù)據(jù)集越小,數(shù)據(jù)集的交集計(jì)算越節(jié)省成本。的項(xiàng)目中,竟然出現(xiàn)了濫用聚集索引的問(wèn)題??磥?lái)沒有培訓(xùn)最最基礎(chǔ)的索引的意義,代價(jià),使用場(chǎng)景,是一個(gè)非常大的失誤。這篇博客就是從這個(gè)角度來(lái)羅列索引的基礎(chǔ)知識(shí)。使用索引的意義索引在數(shù)據(jù)庫(kù)中的作用類似于目錄在書籍中的作用,用來(lái)提高查找信息的速度。使用索引查找數(shù)據(jù),無(wú)需對(duì)整表進(jìn)行掃描,可以快速找到所需數(shù)據(jù)。使用索引的代價(jià)索引需要占用數(shù)據(jù)表以外的物理存儲(chǔ)空間。創(chuàng)建索引和維護(hù)索引要花費(fèi)一定的時(shí)間。當(dāng)對(duì)表進(jìn)行更新操作時(shí),索引需要被重建,這樣降低了數(shù)據(jù)的維護(hù)速度。創(chuàng)建索引的列主鍵外鍵或在表聯(lián)接操作中經(jīng)常用到的列在經(jīng)常查詢的字段上最好建立索引不創(chuàng)建索引的列很少在查詢中被引用包含較少的惟一值定義為 text、ntext 或者 image 數(shù)據(jù)類型的列heaps是staging data的很好選擇,當(dāng)它沒有任何index時(shí)excellent for high performance data loading (parallel bulk load and parallel index creation after load)excellent as a partition to a partitioned view or a partitioned table聚集索引提高性能的方法,在前面幾篇博客中分別提到過(guò),下面只是一個(gè)簡(jiǎn)單的大綱,細(xì)節(jié)請(qǐng)參看前面幾篇博客。何時(shí)創(chuàng)建聚集索引?clustered index會(huì)提高大多數(shù)table的性能,尤其是當(dāng)它滿足以下條件時(shí):獨(dú)特, 狹窄, 靜止: 最重要的條件持續(xù)增長(zhǎng)的,最好是只向上增加。例如:identitydate, identityguid (only when using newsequentialid() function)聚集索引唯一性(獨(dú)特型的問(wèn)題)由于聚集索引的b+樹結(jié)構(gòu)的葉子節(jié)點(diǎn)必須指向具體數(shù)據(jù)。如果你要建立聚集索引的列不唯一,并且你指定的創(chuàng)建的聚集索引是非唯一的聚集索引,則會(huì)有以下情況:如果未使用 unique 屬性創(chuàng)建聚集索引,數(shù)據(jù)庫(kù)引擎 將向表自動(dòng)添加一個(gè)四字節(jié) uniqueifier 列。必要時(shí),數(shù)據(jù)庫(kù)引擎 將向行自動(dòng)添加一個(gè) uniqueifier 值,使每個(gè)鍵唯一。此列和列值供內(nèi)部使用,用戶不能查看或訪問(wèn)。 14 / 14