彙集索引,非彙集索引,惟一索引

https://zhidao.baidu.com/question/1573903009844889260.htmlhtml

  彙集索引並不必定是惟一索引
主鍵是惟一的,因此建立了一個主鍵的同時,也就這個字段建立了一個惟一的索引, 惟一索引實際上就是要求指定的列中全部的數據必須不一樣。主鍵一惟一索引的區別:
1 一個表的主鍵只能有一個,而惟一索引能夠建多個。
2 主鍵能夠做爲其它表的外鍵。
3 主鍵不可爲null,惟一索引能夠爲null。
一、彙集索引
(1)首先指出一個誤區,主鍵並不必定是彙集索引,只是在SQL SERVER中,未明確指出的狀況下,默認將主鍵定義爲彙集,而ORACLE中則默認是非彙集,由於SQL SERVER中的ROWID未開放使用。
(2)彙集索引適合用於須要進行範圍查找的列,由於彙集索引的葉子節點存放的是有序的數據行,查詢引擎可根據WHERE中給出的範圍,直接定位到兩端的葉子節點,將這部分節點頁的數據根據鏈表順序取出便可;
(3)彙集索引儘可能創建在值不會發生變動的列上,不然會帶來非彙集索引的維護;
(4)儘可能在創建非彙集索引以前創建彙集索引,不然會致使表上全部非彙集索引的重建;
(5)彙集索引應該避免創建在數值單調的列上,不然可能會形成IO的競爭,以及B樹的不平衡,從而致使數據庫系統頻繁的維護B樹的平衡性。彙集索引的列值最好可以在表中均勻分佈
二、惟一索引
(1)再指出一個誤區,彙集索引並不必定是惟一索引,因爲SQL SERVER將主鍵默認定義爲彙集索引,事實上,索引是否惟一與是否彙集是不相關的,彙集索引能夠是惟一索引,也能夠是非惟一索引;
(2)將索引設置爲惟一,對於等值查找是頗有利的,當查到第一條符合條件的紀錄時便可中止查找,返回數據,而非惟一索引則要繼續查找,一樣,因爲須要保證惟一性,每一行數據的插入都會去檢查重複性;數據庫

相關文章
相關標籤/搜索