前言
索引是数据库中非常常见且重要的概念,极大地提高了数据库的使用效率。本篇文章就几种常见的索引进行展开。
1.聚集索引和非聚集索引
由于翻译的不同,聚集索引也相当于聚簇索引,非聚集索引相当于非聚簇索引。
聚集索引:索引顺序就是数据的物理存储顺序。在树中,即叶子节点就是数据节点。
非聚集索引:索引顺序与数据的物理存储顺序无关。在树中,即叶子节点仍是索引节点,只不过是指向对应数据块的指针
聚集索引:
非聚集索引:
应用:两种常见的存储引擎MyISAM和InnoDB中,MyISAM就采用了非聚集索引,而InnoDB就采用了聚集索引。
2.稠密索引和稀疏索引
这两个名词的含义跟字面也很相关。
稠密索引:每个节点在索引表中都有一个索引项。查找的时间复杂度就是LogN级别。
稀疏索引:一组节点在索引表中对应一个索引项,查找的过程是先找到最大的小于等于查找值的索引项,再向后顺序查找。时间复杂度大于LogN,大于N。
稠密索引:
稀疏索引:
应用:比如,在一颗B+树中,叶子节点的索引就是稠密索引,而非叶子节点的索引就是稀疏索引。