MySQL常见索引类型包括:1. 普通索引用于加速查询;2. 唯一索引确保列值唯一;3. 主键索引为唯一非空且自动创建聚簇索引;4. 聚簇索引决定数据物理存储顺序,每表仅一个;5. 非聚簇索引保存主键值,需回表查询;6. 覆盖索引避免回表提升性能;7. 联合索引遵循最左前缀原则;8. 全文索引支持文本关键词搜索;9. 空间索引用于地理数据查询。合理使用可提升查询效率,但需权衡写操作开销与存储占用。

MySQL索引是数据库中用于提升数据检索速度的重要机制。合理使用索引可以显著提高查询效率,但也可能增加写操作的开销。下面介绍常见的索引类型及其作用。
1. 普通索引(INDEX)
作用:最基本的索引类型,用于加快数据查询速度,不保证字段的唯一性。
适合用在经常出现在WHERE、JOIN或ORDER BY条件中的列上。
- 创建方式:CREATE INDEX idx_name ON table(column);
- 可重复值,无约束限制
2. 唯一索引(UNIQUE INDEX)
作用:确保索引列中的值是唯一的,允许有一个NULL值。
常用于防止数据重复,比如邮箱、身份证号等需要唯一性的字段。
3. 主键索引(PRIMARY KEY)
作用:一种特殊的唯一索引,不允许NULL值,每张表只能有一个主键。
用于唯一标识表中的每一行记录,通常自动创建聚簇索引(InnoDB引擎)。
- 定义主键时自动创建索引
- 强烈建议每个表都设置主键
4. 聚簇索引(Clustered Index)
作用:决定数据在磁盘上的物理存储顺序,InnoDB通过主键构建聚簇索引。
查询时直接读取数据页,效率高。如果没有显式定义主键,InnoDB会选择第一个非空唯一索引,否则自动生成隐藏的ROWID。
- 一张表只有一个聚簇索引
- 范围查询和排序性能较好
5. 非聚簇索引(Secondary Index / 辅助索引)
作用:索引结构中保存的是主键值,查到索引后需回表查找完整数据。
适用于非主键字段的查询,如状态、类别等常用筛选字段。
- 也叫二级索引
- 查询需要“回表”操作
6. 覆盖索引(Covering Index)
作用:查询所需字段全部包含在索引中,无需回表,提升性能。
例如对(name, age)建联合索引,查询SELECT name, age FROM users WHERE name=’Tom’ 可直接从索引获取数据。
- 减少I/O操作
- 推荐在高频查询中使用
7. 联合索引(Composite Index)
作用:多个字段组合成一个索引,遵循最左前缀匹配原则。
例如对(a,b,c)建联合索引,则(a)、(a,b)、(a,b,c)能命中,但(b)、(c)不能。
- 注意字段顺序
- 避免冗余单列索引
8. 全文索引(FULLTEXT)
作用:用于大文本字段(如文章内容)的关键词搜索,支持自然语言和布尔模式。
适用于LIKE无法满足的复杂文本检索场景。
- MyISAM和InnoDB都支持(MySQL 5.6+)
- 使用MATCH() … AGAINST()语法查询
9. 空间索引(SPATIAL)
作用:用于地理空间数据类型(如POINT、GEOMETRY),支持空间关系查询。
- 仅MyISAM和InnoDB支持
- 常用于地图类应用
基本上就这些常见索引类型。选择合适的索引能极大提升查询性能,但也要注意不要过度创建,因为索引会占用存储空间并影响INSERT、UPDATE、DELETE的速度。
mysql ai 邮箱 mysql索引 red mysql 数据类型 NULL select delete column table 数据库


