㈠ sql索引分為幾類
不同資料庫中提供了不同的索引類型,SQLServer中的索引有兩種:聚集索引(CLUSTERED)和非聚集索引(NONCLUSTERED)。
索引區別:
聚集索引:
聚集索引基於數據行的鍵值,在表內排序和存儲這些數據行。每個表只能有一個聚集索引,應為數據行本分只能按一個順序存儲。
在聚集索引中,表中各行的物理順序與索引鍵值的邏輯(索引)順序相同。聚集索引通常可加快UPDATE和DELETE操作的速度,因為這兩個操作需要讀取大量的數據。創建或修改聚集索引可能要花很長時間,因為執行這兩個操作時要在磁碟上對表的行進行重組。
非聚集索引:
因為一個表中只能有一個聚集索引,如果需要在表中建立多個索引,則可以創建為非聚集索引。表中的數據並不按照非聚集索引列的順序存儲,但非聚集索引的索引行中保存了非聚集鍵值和行定位器,可以快捷地根據非聚集鍵的值來定位記錄的存儲位置。
延伸閱讀:
無論是聚集索引,還是非聚集索引,都可以是唯一索引(UNIQUE)
。在SQL Server中,當唯一性是數據本身的特點時,可創建唯一索引,但索引列的組合不同於表的主鍵。例如,如果要頻繁查詢表a(該表主鍵為列a_id)的列a_name,而且要保證姓名是唯一的,則在列a_name上創建唯一索引。如果用戶為多個員工輸入了相同的姓名,則資料庫顯示錯誤,並且不能保存該表。
㈡ 璇烽棶sql涓鐨刢lustered鏄浠涔堟剰鎬濓紵璋㈣阿
CLUSTERED 錛氳仛闆嗙儲寮曘
NONCLUSTERED錛氶潪鑱氶泦緔㈠紩銆
clustered鏄鐗╃悊涓婂疄鐜版暟鎹鎺掑簭錛屽苟涓斿悓涓涓琛ㄩ噷鍙鑳芥湁涓涓猚lustered緔㈠紩錛岃宯onclustered鏄閫昏緫涓婄殑鎺掑簭銆
寰杞鐨凷QL Server 鏀鎸佷袱縐嶇被鍨嬬殑緔㈠紩:clustered 緔㈠紩鍜宯onclustered緔㈠紩銆
Clustered緔㈠紩鍦ㄦ暟鎹琛ㄤ腑鎸夌収鐗╃悊欏哄簭瀛樺偍鏁版嵁銆傚洜涓哄湪琛ㄤ腑鍙鏈変竴涓鐗╃悊欏哄簭錛屾墍浠ュ湪姣忎釜琛ㄤ腑鍙鑳芥湁涓涓猚lustered緔㈠紩銆傚湪鏌ユ壘鏌愪釜鑼冨洿鍐呯殑鏁版嵁鏃訛紝Clustered緔㈠紩鏄涓縐嶉潪甯告湁鏁堢殑緔㈠紩錛屽洜涓鴻繖浜涙暟鎹鍦ㄥ瓨鍌ㄧ殑鏃跺欏凡緇忔寜鐓х墿鐞嗛『搴忔帓濂藉簭浜嗐
Nonclustered緔㈠紩涓嶄細褰卞搷鍒頒笅闈㈢殑鐗╃悊瀛樺偍錛屼絾鏄瀹冩槸鐢辨暟鎹琛屾寚閽堟瀯鎴愮殑銆傚傛灉宸茬粡瀛樺湪涓涓猚lustered緔㈠紩錛屽湪nonclustered涓鐨勭儲寮曟寚閽堝皢鍖呭惈clustered緔㈠紩鐨勪綅緗鍙傝冦傝繖浜涚儲寮曟瘮鏁版嵁鏇寸揣淇冿紝鑰屼笖瀵硅繖浜涚儲寮曠殑鎵鎻忛熷害姣斿瑰疄闄呯殑鏁版嵁琛ㄦ壂鎻忚佸揩寰楀氥
PRIMARY KEY 綰︽潫榛樿や負 CLUSTERED錛沀NIQUE 綰︽潫榛樿や負 NONCLUSTERED銆
鎵╁睍璧勬枡錛
鑱氶泦緔㈠紩瀵逛簬閭d簺緇忓父瑕佹悳緔㈣寖鍥村肩殑鍒楃壒鍒鏈夋晥銆備嬌鐢ㄨ仛闆嗙儲寮曟壘鍒板寘鍚絎涓涓鍊肩殑琛屽悗錛屼究鍙浠ョ『淇濆寘鍚鍚庣畫緔㈠紩鍊肩殑琛屽湪鐗╃悊鐩擱偦銆
渚嬪傦紝濡傛灉搴旂敤紼嬪簭鎵ц岀殑涓涓鏌ヨ㈢粡甯告緔㈡煇涓鏃ユ湡鑼冨洿鍐呯殑璁板綍錛屽垯浣跨敤鑱氶泦緔㈠紩鍙浠ヨ繀閫熸壘鍒板寘鍚寮濮嬫棩鏈熺殑琛岋紝鐒跺悗媯緔㈣〃涓鎵鏈夌浉閭葷殑琛岋紝鐩村埌鍒拌揪緇撴潫鏃ユ湡銆
榪欐牱鏈夊姪浜庢彁楂樻ょ被鏌ヨ㈢殑鎬ц兘銆傚悓鏍鳳紝濡傛灉瀵逛粠琛ㄤ腑媯緔㈢殑鏁版嵁榪涜屾帓搴忔椂緇忓父瑕佺敤鍒版煇涓鍒楋紝鍒欏彲浠ュ皢璇ヨ〃鍦ㄨュ垪涓婅仛闆嗭紙鐗╃悊鎺掑簭錛夛紝閬垮厤姣忔℃煡璇㈣ュ垪鏃墮兘榪涜屾帓搴忥紝浠庤岃妭鐪佹垚鏈銆
鍙傝冭祫鏂欐潵婧愶細鐧懼害鐧劇-鑱氶泦緔㈠紩