mysql索引类型表
索引类型 | 描述 | MySQL中的适用性 | B树/B 树应用 |
---|---|---|---|
主键索引 | 确保列的唯一性,一个表只能有一个主键索引 | 自动创建,除非指定非聚簇索引 | B 树 |
唯一索引 | 确保列的值唯一,可以有多列,表中可以有多个 | 强制值的唯一性,适用于需要保证数据唯一性的列 | B树/B 树 |
非唯一索引 | 允许列的值重复,适用于不强制数据唯一的查询优化 | 常用于辅助查询,提高检索效率 | B树/B 树 |
组合索引 | 在多个列上创建的索引,提高复合查询条件的检索效率 | 适用于经常一起使用的列组合 | B树/B 树 |
聚簇索引 | 数据行的物理存储顺序与索引键值的逻辑顺序相同 | MySQL的InnoDB引擎默认的主键索引类型 | B 树(默认) |
非聚簇索引 | 数据行的物理存储顺序与索引逻辑顺序可以不同 | 可以有多个,适用于非主键的列 | B树/B 树 |
覆盖索引 | 一个索引包含所有查询所需的列,查询不需要访问数据表 | 减少I/O操作,提高查询效率 | B树/B 树 |
前缀索引 | 对列的一部分(如字符串的前几个字符)创建索引 | 适用于列前缀变化不大的情况 | B树/B 树 |
全文索引 | 用于对大量文本数据进行搜索,支持复杂的文本搜索 | 适用于需要全文搜索的列 | B树(InnoDB不支持全文索引) |
空间索引 | 用于地理空间数据类型,优化空间对象的查询 | 适用于地理信息系统(GIS)相关的查询 | B树/R树(MySQL中使用R树) |
函数索引 | 基于某个表达式或函数的结果创建的索引 | 适用于需要对表达式结果进行搜索的场景 | B树/B 树 |
外键索引 | 用于维护表之间的参照完整性 | MySQL自动为外键列创建索引 | B树/B 树 |