智用指南
第二套高阶模板 · 更大气的阅读体验

创建索引语句怎么写?一文看懂数据库建索引的方法

发布时间:2025-12-10 09:34:25 阅读:320 次

在使用数据时,数据量一多,查询速度就会变慢。比如你在公司系统里查一个客户信息,点一下要等好几秒,这时候很可能是因为缺少索引。给字段加上索引,就像给书加了目录,查起来就快多了。

什么是索引?

索引是数据库中一种提升查询效率的数据结构。它不改变数据本身,而是记录某个字段的值和对应数据行的位置,让数据库能快速定位到目标数据。

创建索引的基本语法

在 MySQL 中,最常见的创建索引语句是使用 CREATE INDEX 命令。语法如下:

CREATE INDEX 索引名 ON 表名 (字段名 [(长度)]);

比如你有一张用户表 user_info,想对用户的手机号 mobile 字段建索引,可以这样写:

CREATE INDEX idx_mobile ON user_info (mobile);

这里 idx_mobile 是你给索引起的名字,建议有规律,方便后期维护。

对字符串前缀建索引

如果字段是较长的字符串,比如地址或描述,没必要对整个字段建索引,可以只取前几位。例如对用户名 username 的前8位建索引:

CREATE INDEX idx_username ON user_info (username(8));

这样既能节省空间,又能提高查询效率。

唯一索引怎么写?

有些字段要求不能重复,比如身份证号、邮箱。这时应该创建唯一索引,防止重复数据插入:

CREATE UNIQUE INDEX idx_email ON user_info (email);

一旦有重复值尝试插入,数据库会直接报错。

主键和索引的关系

主键(PRIMARY KEY)本身就是一种特殊的唯一索引,而且不允许为空。当你设定了主键,数据库会自动为它创建索引,不需要再手动添加。

联合索引怎么写?

有时候需要多个字段一起查,比如按省份和城市筛选用户。这时可以创建联合索引:

CREATE INDEX idx_province_city ON user_info (province, city);

注意顺序:查询条件中必须包含前面的字段,索引才有效。比如只查 city 可能用不上这个索引。

什么时候该建索引?

经常出现在 WHERE 条件里的字段,比如 status、create_time;用于排序 ORDER BY 或分组 GROUP BY 的字段,也适合建索引。

但不是越多越好。每加一个索引,插入、更新数据时都会变慢,因为索引也要同步更新。所以只给真正需要的字段加。

查看已有索引

想知道一张表有哪些索引,可以用这条命令:

SHOW INDEX FROM 表名;

执行后会列出所有索引名称、字段、类型等信息,方便你判断是否需要调整。

删除索引

如果某个索引没用了,可以删掉,释放空间:

DROP INDEX 索引名 ON 表名;

比如删掉之前建的手机号索引:

DROP INDEX idx_mobile ON user_info;