说到底,有用的其实只有一种索引,那就是聚集索引。这两种索引都是以B-树的形式存储。
但是聚集索引的叶子节点存储的是对数据库页(数据库保存数据最小单元)的引用。
非聚集索引通常情况下保存的是对聚集索引的引用。所以查找非聚集索引其实也是对聚集索引的查找。
由于聚集索引的底层数据结构是B-树,那么当给某一列添加聚集索引之后,数据的物理保存顺序就会按照该列的逻辑顺序排序存储。因为B-树类似于二分查找树。
如果没有聚集索引,数据库页按照堆存储,建立了聚集索引,数据按B-查找树的形式存储,性能可想而知。
所以建立聚集索引的列通常是唯一的且易于排序的列。自增长列就是一个不错的选择,因为自增长列可以有效避免insert操作带来的索引碎片。
网友评论