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

6次阅读

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