MySQL的索引分类
在前面我为什么用多样化去形容数据库索引呢?因为确实如此,先列一些大家都听说过的索引称呼:聚簇索引、非聚簇索引、唯一索引、主键索引、联合索引、全文索引、单列索引、多列索引、复合索引、普通索引、二级索引、辅助索引、次级索引、有序索引、B+Tree
索引、R-Tree
索引、T-Tree
索引、Hash
索引、空间索引、前缀索引......
是不是看的眼花缭乱,这些都是
MySQL
中索引的一些称呼,一通看下来,估计大家看“索引”两个字都有点不认识了^_^
但实际上MySQL
中真的有这么多索引类型吗?其实并没有,上述列出的索引称呼中,有几个称呼对应的索引是同一个,有一部分只是逻辑上的索引,那索引究竟该如何分类呢?其实从不同的层面上来说,可以将索引划分为不同的类型,接下来重点聊一聊。
1.1、数据结构层次
前面聊索引本质的时候提到过,索引建立后也会在磁盘生成索引文件,那每个具体的索引节点该如何在本地文件中存放呢?这点是由索引的数据结构来决定的。比如索引的底层结构是数组,那所有的索引节点都会以Node1→Node2→Node3→Node4....
这样的形式,存储在磁盘同一块物理空间中,不过MySQL
的索引不支持数组结构,或者说数组结构不适合作为索引结构,MySQL
索引支持的数据结构如下:
B+Tree
类型: