MySql的索引类型
1)按存储结构分类
①B+树索引
特点:基于B+树实现,支持等值查询、范围查询和排序,叶子节点通过指针连接提升范围查询效率。
适用场景:主键索引、唯一索引、普通索引等常规场景。
②哈希索引
特点:基于哈希表实现,仅支持精确匹配查询。查询效率O(1),不支持范围查询和排序。
适用场景:精确查找(如MEMORY存储引擎默认使用)
③全文索引(FULLTEXT)
特点:通过倒排索引实现,支持自然语言和布尔模式搜索,适用于文本内容检索。
适用场景:博客、文章等大文本字段的模糊搜索。
④空间索引(SPATIAL)
特点:处理地理空间数据(如 GEOMETRY 类型),支持 R-Tree 结构,仅适用于 MyISAM 和部分 InnoDB 版本。
适用场景:GIS 数据的地理范围查询。
⑤自适应哈希索引(Adaptive Hash Index)
特点:InnoDB 自动为高频访问数据创建哈希索引,无需手动管理
2)按应用场景分类
①主键索引(PRIMARY KEY)
特点:唯一且非空,InnoDB中默认以主键为聚簇索引,数据直接存储在叶子节点。
②唯一索引(UNIQUE)
特点:索引列值唯一但运行空值,用于约束数据唯一性。
③普通索引(Normal Index)
特点:允许重复值和空值,无唯一性约束,适用于高频查询列。
④组合索引(Composite Index)
特点:基于多列创建。遵循最左前缀原则优化多条件查询。
⑤覆盖索引(Coveriong Index)
特点:索引包含查询所需的所有字段,避免回表,提升查询效率。
⑥前缀索引(Prefix Index)
特点:仅索引列值的前几个字符,减少存储空间占用。
3)其他补充类型
①聚簇索引(Clustered Index)
特点:数据与索引物理存储顺序一致,InnoDB 主键索引即为聚簇索引,范围查询性能更优。
②非聚簇索引(Secondary Index)
特点:数据与索引分离,叶子节点存储主键值而非数据地址,需二次查询主键索引。
③倒序索引(Descending Index)
特点:按降序存储索引键值,优化 ORDER BY ... DESC 查询。
④不可见索引(Invisible Index)
特点:索引对查询优化器不可见,用于临时禁用索引而不删除。
4)索引选择建议
高频查询字段优先使用B+树索引,兼顾查询效率和范围扫描。
精确匹配场景(如缓存表)可考虑哈希索引,但需注意存储引擎限制。
文本搜索需求必须使用全文索引,避免低效的LIKE全表扫描。
本文来自博客园,作者:it-小林,转载请注明原文链接:https://www.cnblogs.com/linruitao/p/18826364

浙公网安备 33010602011771号