如何添加普通索引_mysql index基础操作

10次阅读

mysql中添加普通索引应优先使用ALTER table ADD INDEX或CREATE INDEX语句,选择高区分度、高频查询字段,避免冗余,建前检查选择性与使用场景,建后用SHOW INDEX验证,删除前需确认实际使用。

如何添加普通索引_mysql index基础操作

在 MySQL 中添加普通索引,核心是使用 ALTER TABLE … ADD INDEXCREATE INDEX 语句,目标字段需具备区分度且非主键/唯一约束时优先考虑普通索引。

用 ALTER TABLE 添加普通索引(最常用)

适用于已有表,语法简洁,支持同时建多个索引:

  • 单字段索引ALTER TABLE users ADD INDEX idx_email (email);
  • 多字段联合索引(注意顺序):ALTER TABLE orders ADD INDEX idx_status_time (status, created_at);
  • 指定索引名可选但推荐:不指定时 MySQL 自动生成(如 email_2),自定义名更易识别和管理。

用 CREATE INDEX 单独建索引

适合对大表分步优化,或权限受限(部分环境不允许 ALTER TABLE):

  • 语法:CREATE INDEX idx_nickname ON profiles (nickname);
  • 不能用于主键或唯一约束字段(会报错),仅限普通索引。
  • 执行后可通过 SHOW INDEX FROM profiles; 验证是否生效。

建索引前的关键检查项

避免无效或负向影响:

  • 字段选择性要高:如 gender(只有 ‘M’/’F’)不适合单独建索引;user_idmobile 更合适。
  • WHERE / ORDER BY / JOIN 条件中高频出现的字段优先:例如查询常写 WHERE status = 'paid' ORDER BY updated_at DESC,就适合建 (status, updated_at) 联合索引。
  • 避免冗余索引:已有 (a, b) 索引时,再建 (a) 是多余的;但 (b)(b, a) 可能仍有价值。

查看与删除普通索引

日常维护必备操作:

  • 查索引:SHOW INDEX FROM users;(重点关注 Key_nameColumn_name 列)
  • 删索引:DROP INDEX idx_email ON users;(注意:MySQL 5.7+ 支持该语法;旧版本用 ALTER TABLE users DROP INDEX idx_email;
  • 删除前建议先 EXPLAIN select ... 确认该索引是否被实际使用。
text=ZqhQzanResources