如何创建索引_mysql索引创建方法

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

在 MySQL 中创建索引,核心是使用 CREATE INDEX 语句或在建表时通过 INDEX / KEY 关键字定义。索引能显著提升查询速度,但会略微降低写入性能并占用额外磁盘空间,因此需按需创建、避免滥用。

单列索引的创建方法

最常用的方式是为单个字段建立普通索引。语法简洁,适合高频查询条件字段(如 user_id、email):

建表后添加:
CREATE INDEX idx_email ON users(email);
建表时直接定义:
CREATE TABLE users (id INT, email VARCHAR(100), INDEX idx_email (email));

联合索引与最左前缀原则

当查询常同时用到多个字段(如 WHERE status = 1 AND category = 'A'),可建联合索引提升效率。注意:MySQL 遵循最左前缀匹配规则,查询条件必须从索引最左侧字段开始连续使用才有效:

创建联合索引:
CREATE INDEX idx_status_category ON products(status, category);
该索引可加速
WHERE status = 1
WHERE status = 1 AND category = 'A'
,但对
WHERE category = 'A'
无效

主键索引和唯一索引的自动创建

主键(PRIMARY KEY)和唯一约束(UNIQUE)会自动创建对应索引,无需额外操作:

CREATE TABLE orders (order_id INT PRIMARY KEY, order_no VARCHAR(20) UNIQUE);
—— 此时 order_id 和 order_no 各自拥有一个 B+ 树索引
若已有数据且字段值不唯一,添加 UNIQUE 索引会失败,需先去重

查看和删除索引

创建后建议验证是否生效,并定期清理冗余索引:

查看表索引:
SHOW INDEX FROM users;
SELECT * FROM INFORMATION_SCHEMA.STATISTICS WHERE TABLE_NAME = 'users';
删除索引:
DROP INDEX idx_email ON users;
避免重复索引(如已有联合索引 (a,b),再单独建 (a) 就可能冗余)

相关推荐