按数据结构
- B树索引
- 数据位于叶子节点,到任何一个叶子节点的距离相同,一般不超过3-4层
- B+树索引:每个叶子节点除了数据还存放前后叶子节点的指针,方便快速检索,是InnoDB采用的索引结构
- Hash索引
- Fulltext索引
- R树索引
按实现方式
- 聚集索引(聚簇索引)
- 叶子节点存放行数据
- 将索引行直接存储在索引中
- 优点:数据访问快
- 缺点:
- 插入速度严重依赖插入顺序,按主键顺序插入最快,否则会出现页分裂影响性能
- 更新主键代价很高
- 二级索引访问需要两次索引查找(主键-->行数据)
- 非聚集索引(非聚簇索引)
- 在聚簇索引之上创建的索引
- 叶子节点存储主键值,或指向数据行的指针
- 访问数据需要二次查找,第一次找到主键值,第二次根据主键值找到行数据
按对应键
- 主键索引
- InnoDB下是聚簇索引,MyISAM下是非聚簇索引
- 叶子节点只能按一棵B+树排序,故一张表只能有一个
- 辅助键索引(二级索引)
- 不影响聚簇索引中数据的组织,一张表可以有多个
按存储引擎
- InnoDB
- 主索引:保存数据,key是表的主键
- 辅助索引:记录主键的值而不是地址
- 实现方式:聚集索引(数据和索引在一起)
- MyISAM
- 主索引:索引和数据分离,索引叶子节点仅保存数据地址
- 辅助索引:和主索引无区别
- 实现方式:非聚集索引(数据和索引不在一起)
参考
https://www.cnblogs.com/jiawen010/p/11805241.html