㈠ 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簺缁忓父瑕佹悳绱㈣寖鍥村肩殑鍒楃壒鍒鏈夋晥銆備娇鐢ㄨ仛闆嗙储寮曟壘鍒板寘鍚绗涓涓鍊肩殑琛屽悗锛屼究鍙浠ョ‘淇濆寘鍚鍚庣画绱㈠紩鍊肩殑琛屽湪鐗╃悊鐩搁偦銆
渚嬪傦紝濡傛灉搴旂敤绋嬪簭鎵ц岀殑涓涓鏌ヨ㈢粡甯告绱㈡煇涓鏃ユ湡鑼冨洿鍐呯殑璁板綍锛屽垯浣跨敤鑱氶泦绱㈠紩鍙浠ヨ繀閫熸壘鍒板寘鍚寮濮嬫棩鏈熺殑琛岋紝鐒跺悗妫绱㈣〃涓鎵鏈夌浉閭荤殑琛岋紝鐩村埌鍒拌揪缁撴潫鏃ユ湡銆
杩欐牱鏈夊姪浜庢彁楂樻ょ被鏌ヨ㈢殑鎬ц兘銆傚悓鏍凤紝濡傛灉瀵逛粠琛ㄤ腑妫绱㈢殑鏁版嵁杩涜屾帓搴忔椂缁忓父瑕佺敤鍒版煇涓鍒楋紝鍒欏彲浠ュ皢璇ヨ〃鍦ㄨュ垪涓婅仛闆嗭紙鐗╃悊鎺掑簭锛夛紝閬垮厤姣忔℃煡璇㈣ュ垪鏃堕兘杩涜屾帓搴忥紝浠庤岃妭鐪佹垚鏈銆
鍙傝冭祫鏂欐潵婧愶細鐧惧害鐧剧-鑱氶泦绱㈠紩