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全表扫描。

posted @ 2025-04-15 11:17  it-小林  阅读(41)  评论(0)    收藏  举报