索引主要用于提升查询效率,加快select速度,支持唯一性约束、优化排序分组,实现覆盖索引减少回表,但需避免过多创建以平衡读写性能。

索引在mysql数据库中主要用于提升数据查询的效率。它类似于书籍的目录,可以帮助数据库快速定位到所需的数据行,而不需要扫描整张表。
加快查询速度
当执行SELECT语句时,如果查询条件中的字段有索引,MySQL可以利用索引快速找到匹配的记录,大幅减少需要读取的数据量。
 例如,在一个拥有百万级用户记录的表中,按“手机号”查找用户,若该字段建立了索引,查询响应时间会显著缩短。
建议:对经常出现在WHERE、JOIN、ORDER BY子句中的字段建立索引。
保证数据唯一性
唯一索引(UNIQUE INDEX)可以防止在指定列中插入重复值,常用于确保如身份证号、邮箱、用户名等字段的唯一性。
 主键索引本质上也是一种唯一索引,同时不允许NULL值。
应用场景:用户注册系统中,通过唯一索引避免重复注册同一邮箱。
优化排序和分组操作
如果ORDER BY或GROUP BY使用的字段已建立索引,MySQL可以直接利用索引的有序性,避免额外的排序操作(即避免using filesort),从而提升性能。
注意:索引的顺序必须与排序或分组的字段顺序一致,否则可能无法生效。
支持覆盖索引,减少回表
当查询所需的所有字段都包含在索引中时,MySQL可以直接从索引中获取数据,无需再回到主表查找,这种称为“覆盖索引”。
 这能显著减少I/O操作,提高查询效率。
示例:对(name, age)建立联合索引,查询SELECT name, age FROM user WHERE name = ‘张三’ 可直接使用索引完成。
基本上就这些。索引虽好,但不是越多越好。过多的索引会增加写操作(INSERT、UPDATE、delete)的开销,并占用更多存储空间。合理设计索引,结合实际查询需求,才能发挥最大效益。


