在MySQL数据库中,索引是帮助数据库高效获取数据的数据结构,合理的索引可以大幅提升查询效率。创建索引的语句有多种形式,对应不同的索引类型和业务需求,下面逐一介绍具体的实现方式。

创建索引的基础语法
MySQL中创建索引最常用的语法是CREATE INDEX语句,基本格式如下:
-- 创建普通索引的基础语法 CREATE INDEX 索引名称 ON 表名 (列名1, 列名2, ...);
其中索引名称是自定义的,建议命名时体现索引对应的表和字段,方便后续维护。表名是要添加索引的目标表,括号中是需要创建索引的字段,支持单个字段索引,也支持多个字段组成的联合索引。
不同场景下的创建索引语句
创建唯一索引
唯一索引要求索引列的值必须唯一,允许存在空值,适合需要保证字段值不重复的场景,语法如下:
-- 创建唯一索引 CREATE UNIQUE INDEX idx_user_email ON user (email);
创建主键索引
主键索引是一种特殊的唯一索引,不允许有空值,通常在创建表时直接定义,也可以在表创建后添加,语法如下:
-- 创建表时定义主键索引
CREATE TABLE user (
id INT NOT NULL,
username VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
-- 表创建后添加主键索引
ALTER TABLE user ADD PRIMARY KEY (id);
创建全文索引
全文索引主要用于文本内容的模糊查询,适合CHAR、VARCHAR、TEXT类型的字段,语法如下:
-- 创建全文索引 CREATE FULLTEXT INDEX idx_article_content ON article (content);
创建联合索引
联合索引是多个字段组成的索引,遵循最左前缀匹配原则,语法如下:
-- 创建联合索引,包含user_id和create_time两个字段 CREATE INDEX idx_user_create_time ON order (user_id, create_time);
使用ALTER TABLE语句创建索引
除了CREATE INDEX语句,还可以通过ALTER TABLE语句为表添加索引,语法如下:
-- 使用ALTER TABLE添加普通索引 ALTER TABLE user ADD INDEX idx_username (username); -- 使用ALTER TABLE添加唯一索引 ALTER TABLE user ADD UNIQUE INDEX idx_phone (phone);
创建索引的注意事项
- 索引不是越多越好,过多的索引会增加数据插入、更新、删除的开销,同时占用额外的存储空间。
- 频繁查询的字段适合创建索引,频繁更新的字段不适合创建索引。
- 联合索引的字段顺序需要根据查询场景设计,把区分度高的字段放在前面。
- 创建索引时如果表中数据量很大,可能会锁表一段时间,建议在业务低峰期操作。
查看和删除索引
创建索引后可以通过以下语句查看表的索引信息:
-- 查看user表的所有索引 SHOW INDEX FROM user;
如果需要删除索引,可以使用以下语句:
-- 删除idx_username索引 DROP INDEX idx_username ON user; -- 或者使用ALTER TABLE删除索引 ALTER TABLE user DROP INDEX idx_username;