天天看點

【sqlserver】聚集索引和非聚集索引的比較

聚集索引是一種對磁盤上實際資料重新組織以按指定的一列或者多列值排序。像我們用到的漢語字典,就是一個聚集索引。換句話說就是聚集索引會改變資料庫表中資料的存放順序。 非聚集索引不會重新組織表中的資料,而是對每一行存儲索引列值并用一個指針指向資料所在的頁面。(一個值指向多行等于該值的資料)。sqlserver預設情況下建立的索引是非聚集索引。非聚集索引在排序時會對所有的取值進行排序,然後快速找到該值對應的所有資料,達到減少排序時間的效果,不需要全表掃描。

聚集索引是直接将所有資料排序後存入表中,是以select * 的時候不需要再進行order by的操作,但是建立一個聚集索引,至少需要相當于該表120%的附加空間,用來存放該表的副本和索引中間頁,但是他的性能幾乎總是比其他索引要快。 非聚集索引不會對表中資料進行排序,而是進行select * from 表名 order by 字段 的操作時減少排序的時間。

一個表隻能有一個聚集索引,但是可以有多個非聚集索引。建立一個表的時候自動為主鍵生成一個聚集索引。是以無法再生成其他的聚集索引。隻能删除主鍵聚集索引,然後為主鍵生成非聚集索引,再添加新的聚集索引。

以上為自己學習索引時候百度許多了解以後的總結,如有錯誤或者不詳盡的地方還請諒解。