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

来源:这里教程网 时间:2026-02-28 20:40:31 作者:

在 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_id
mobile
更合适。
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_name
Column_name
列)
删索引:
DROP INDEX idx_email ON users;
(注意:MySQL 5.7+ 支持该语法;旧版本用
ALTER TABLE users DROP INDEX idx_email;
删除前建议先
EXPLAIN SELECT ...
确认该索引是否被实际使用。

相关推荐