MySQL创建索引核心用CREATE INDEX或建表时INDEX/KEY定义;单列索引适用于高频查询字段;联合索引需遵循最左前缀原则;主键和唯一约束自动建索引;应通过SHOW INDEX查看并及时删除冗余索引。

在 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 遵循最左前缀匹配规则,查询条件必须从索引最左侧字段开始连续使用才有效:
由于疫情等原因大家都开始习惯了通过互联网上租车服务的信息多方面,且获取方式简便,不管是婚庆用车、旅游租车、还是短租等租车业务。越来越多租车企业都开始主动把租车业务推向给潜在需求客户,所以如何设计一个租车网站,以便在同行中脱颖而出就重要了,易优cms针对租车行业市场需求、目标客户、盈利模式等,进行策划、设计、制作,建设一个符合用户与搜索引擎需求的租车网站源码。 网站首页
- 创建联合索引:
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) 就可能冗余)









