其實我們的漢語詞典的正文本身就是壹個聚簇索引。比如我們要查“an”這個字,自然會翻開字典的前幾頁,因為“An”的拼音是“An”,按拼音排序漢字的字典是以英文字母“A”開頭,以“Z”結尾,所以“An”這個字自然排在字典的最前面。如果妳找遍了所有以“A”開頭的部分都找不到這個單詞,說明這個單詞不在妳的字典裏。同樣,如果妳查“張”這個字,妳也會翻到妳字典的最後壹部分,因為“張”的拼音是“張”。換句話說,字典的主體本身就是壹個目錄,妳不需要去查其他目錄來找到妳需要找的東西。
我們把這種文本內容本身按照壹定規則排列的目錄稱為“聚簇索引”。
如果妳知道壹個單詞,妳可以很快地在字典中查找。但是妳可能會遇到壹個妳不認識的單詞,妳不知道它的發音。這時候妳就找不到妳剛才要查的字了,妳需要根據偏旁查找妳要的字,然後直接翻到壹頁,根據字後的頁碼找到妳要的字。但是,妳結合部首目錄和字典找到的單詞排序,並不是真正的文本排序方法。比如妳查“張”這個字,我們看到部首查完之後的字典裏“張”這個字的頁碼是672,“池”這個字在字典裏“張”這個字的上面,但是頁碼是63,在它的下面。顯然,這些字並不是真的分別在“張”字的上面和下面。現在妳看到的連續詞“遲、張、弩”其實就是它們在非聚集索引中的排序,是字典體中的詞在非聚集索引中的映射。這樣我們就可以找到妳需要的單詞,但是需要兩個過程,先在目錄中找到結果,然後翻到妳需要的頁碼。
我們把這種目錄純為目錄,文本純為文本的排序方式稱為“非聚集索引”。
通過上面的例子,我們可以理解什麽是聚集索引和非聚集索引。
進壹步延伸,我們很容易理解,每個表只能有壹個聚集索引,因為目錄只能按壹種方式排序。
(B)何時使用聚集索引或非聚集索引
下表總結了何時使用聚集索引或非聚集索引(很重要)。
使用聚集索引使用非聚集索引的操作說明
外鍵列應該
主鍵列應該
列通常按順序分組。
是否應該返回某個範圍內的數據
十進制數的不同值不應
大量不同的值不應該
頻繁更新的列不應
不應頻繁修改索引列
壹個或幾個不同的值不應該
實際上,我們可以通過前面的聚集索引和非聚集索引定義的例子來理解上表。例如,返回某個範圍內的壹項數據。例如,您的壹個表有壹個time列,您只需在該列中設置壹個聚集索引。這時,當妳查詢2004年6月65438+10月1到6月65438+10月1的所有數據時,這個速度會非常快,因為妳的字典的正文是按日期排序的,聚類索引只需要找到所有要檢索的數據。與非聚集索引不同,必須先找到目錄中每壹項數據對應的頁碼,然後根據頁碼找到具體內容。