MySQL的索引类型有哪些?

从索引结构角度

B+树索引:用B+树的结构组织索引,索引的排列有序,叶子节点除了存储索引,也存储数据或指向数据的指针

哈希索引:基于哈希表的结构组织索引,适用于等值查询,不支持范围查询,常用于MEMORY引擎

倒排索引:用于全文搜索,以每个文档的唯一单词列表为根据来构建索引,索引的键是单词,值是包含该唯一单词的文档列表

R-树索引:用于处理多维空间数据的索引,适用于地理相关数据的存储和查询

从物理存储角度

基于B+树的两种索引类型

聚簇索引:数据和索引一同存储

非聚簇索引:数据和索引分开存储,索引的值存储指向数据的指针 (一般是主键值)

详细的分析可以看这篇博客

从索引类型角度

普通索引 (二级索引、辅助索引):一般指非主键索引,也非唯一索引的索引

主键索引:一张表只能有一个主键索引,索引值不允许null,可以被其他表引用为外键

唯一索引:一张表可以有多个唯一索引,保证索引列的值都是唯一的,允许null值

联合索引:指以多个字段构建的索引 (不包含主键),索引列是有顺序的,使用联合索引可以提高多条件查询的效率 (索引下推和覆盖索引)

全文索引:用于全文搜索,倒排索引是其实现方式

空间索引:用于处理多维空间数据,R-树索引是其实现方式