news 2026/4/24 15:48:37

MySQL的索引语法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySQL的索引语法详解

目录

一、索引的创建语法(最核心)

二、建表时创建索引(CREATE TABLE)

1.普通索引(INDEX / KEY)

2.唯一索引(UNIQUE INDEX)

3.主键索引(PRIMARY KEY)

4.联合索引(多列索引)

5.全文索引(FULLTEXT)

三、表已经建好了:怎么添加索引?(ALTER TABLE)

添加普通索引

添加唯一索引

添加联合索引

添加全文索引

四、另一套添加方式:CREATE INDEX(也很常见)

创建普通索引

创建唯一索引

创建联合索引

五、删除索引(DROP INDEX)

删除普通/唯一/联合索引

删除主键索引(特殊)

六、查看索引(排查必备)

查看表有哪些索引

查看建表语句(索引也会显示)

查看建表语句(包含索引)

七、不常见语法

前缀索引(适合长字符串)

联合索引最左前缀(面试必考)

强制使用/忽略索引(排查慢SQL偶尔用)


一、索引的创建语法(最核心)

MySQL 创建索引主要有两套写法:

✅ 建表时创建(CREATE TABLE)

✅ 表存在后添加(ALTER TABLE / CREATE INDEX)


二、建表时创建索引(CREATE TABLE)

1.普通索引(INDEX / KEY)

📌 语法:

CREATE TABLE 表名 ( 字段定义..., INDEX 索引名(字段名) );

✅ 示例:

CREATE TABLE user ( id BIGINT PRIMARY KEY, age INT, INDEX idx_age(age) );

📌 常见场景:

  • WHERE age = ?

  • WHERE age > ?

  • 经常用来筛选/排序的字段


2.唯一索引(UNIQUE INDEX)

唯一索引的作用:保证某个字段的值不重复(比如邮箱、手机号)。

📌 语法:

CREATE TABLE 表名 ( 字段定义..., UNIQUE INDEX 索引名(字段名) );

✅ 示例:

CREATE TABLE user ( id BIGINT PRIMARY KEY, email VARCHAR(100), UNIQUE INDEX uk_email(email) );

📌 注意:

  • 唯一索引会限制重复插入

  • 插入重复值会报错(Duplicate entry)


3.主键索引(PRIMARY KEY)

主键索引的特点:唯一 + 非空,并且一张表只能有一个。

📌 语法:

CREATE TABLE 表名 ( id BIGINT NOT NULL, ..., PRIMARY KEY(id) );

✅ 示例:

CREATE TABLE user ( id BIGINT NOT NULL, name VARCHAR(50), PRIMARY KEY(id) );

4.联合索引(多列索引)

联合索引就是:一个索引里放多个字段

📌 语法:

CREATE TABLE 表名 ( 字段定义..., INDEX 索引名(字段1, 字段2, 字段3) );

✅ 示例:

CREATE TABLE orders ( id BIGINT PRIMARY KEY, user_id BIGINT, status TINYINT, create_time DATETIME, INDEX idx_user_status_time(user_id, status, create_time) );

📌 常见场景:

  • 查询某个用户的某种状态订单,并按时间排序

SELECT * FROM orders WHERE user_id = 1001 AND status = 1 ORDER BY create_time DESC;

5.全文索引(FULLTEXT)

全文索引用于文本检索,适合文章内容搜索。

📌 语法:

CREATE TABLE 表名 ( 字段定义..., FULLTEXT INDEX 索引名(字段名) );

✅ 示例:

CREATE TABLE article ( id BIGINT PRIMARY KEY, content TEXT, FULLTEXT INDEX ft_content(content) );

三、表已经建好了:怎么添加索引?(ALTER TABLE)

📌 在项目里最常用的就是这一套(上线后优化慢SQL)。

添加普通索引

ALTER TABLE user ADD INDEX idx_age(age);

添加唯一索引

ALTER TABLE user ADD UNIQUE INDEX uk_email(email);

添加联合索引

ALTER TABLE orders ADD INDEX idx_user_status(user_id, status);

添加全文索引

ALTER TABLE article ADD FULLTEXT INDEX ft_content(content);

📌 注意:

  • ALTER TABLE会修改表结构

  • 大表加索引可能会比较慢(线上要小心)


四、另一套添加方式:CREATE INDEX(也很常见)

这个写法更“直观”,专门用来创建索引。

创建普通索引

CREATE INDEX idx_age ON user(age);

创建唯一索引

CREATE UNIQUE INDEX uk_email ON user(email);

创建联合索引

CREATE INDEX idx_user_status_time ON orders(user_id, status, create_time);

五、删除索引(DROP INDEX)

删除普通/唯一/联合索引

📌 语法:

DROP INDEX 索引名 ON 表名;

✅ 示例:

DROP INDEX idx_age ON user;

删除主键索引(特殊)

主键索引不是普通索引名,删除方式不同:

ALTER TABLE user DROP PRIMARY KEY;

六、查看索引(排查必备)

查看表有哪些索引

SHOW INDEX FROM user;

查看建表语句(索引也会显示)

SHOW CREATE TABLE user;

查看建表语句(包含索引)

SHOW CREATE TABLE user\G

📌 常见用途:

  • 怀疑索引没建成功

  • 想确认索引名字到底叫什么

  • 看联合索引的字段顺序


七、不常见语法

前缀索引(适合长字符串)

如果字段很长(例如 email / url),可以只取前几个字符建索引节省空间。

CREATE INDEX idx_email_prefix ON user(email(10));

📌 注意:

  • 只索引前 10 个字符

  • 区分度可能会下降(要看数据分布)


联合索引最左前缀(面试必考)

有索引:

CREATE INDEX idx_a_b_c ON t(a, b, c);

能命中索引:

WHERE a = 1 WHERE a = 1 AND b = 2 WHERE a = 1 AND b = 2 AND c = 3

❌ 不容易命中:

WHERE b = 2 WHERE c = 3 WHERE b = 2 AND c = 3

一句话理解:联合索引要从最左列开始连续使用。


强制使用/忽略索引(排查慢SQL偶尔用)

强制使用:

SELECT * FROM user FORCE INDEX(idx_age) WHERE age = 18;

忽略索引:

SELECT * FROM user IGNORE INDEX(idx_age) WHERE age = 18;
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 16:47:28

强力网盘直链下载助手完整使用指南

强力网盘直链下载助手完整使用指南 【免费下载链接】Online-disk-direct-link-download-assistant 可以获取网盘文件真实下载地址。基于【网盘直链下载助手】修改(改自6.1.4版本) ,自用,去推广,无需输入“暗号”即可使…

作者头像 李华
网站建设 2026/4/17 8:14:31

DLSS指示器开启指南:快速检测游戏DLSS状态

DLSS指示器开启指南:快速检测游戏DLSS状态 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS指示器是NVIDIA DLSS技术中的重要调试工具,通过DLSS Swapper软件可以轻松开启,让玩家直…

作者头像 李华
网站建设 2026/4/18 12:35:11

MiDaS+Stable Diffusion联动:2小时低成本创意方案

MiDaSStable Diffusion联动:2小时低成本创意方案 你是不是也遇到过这种情况:作为一名数字艺术家,脑子里有无数创意火花,想把照片转成带深度感的AI绘画作品,或者做一张“会动”的立体插画。但一打开电脑,刚…

作者头像 李华
网站建设 2026/4/24 4:13:11

AI智能文档扫描仪实测报告:不同角度拍摄的矫正成功率统计

AI智能文档扫描仪实测报告:不同角度拍摄的矫正成功率统计 1. 背景与测试目标 在日常办公场景中,用户经常需要通过手机拍摄纸质文档、发票或白板内容,并将其转化为可存档或分享的电子扫描件。然而,手持拍摄难以避免出现角度倾斜、…

作者头像 李华
网站建设 2026/4/23 11:08:42

从0开始学AI对话:Qwen1.5-0.5B-Chat新手入门教程

从0开始学AI对话:Qwen1.5-0.5B-Chat新手入门教程 1. 引言 随着大模型技术的普及,越来越多开发者希望在本地或轻量级环境中部署自己的AI对话服务。然而,大多数开源模型对硬件资源要求较高,难以在低配设备上运行。本文将带你从零开…

作者头像 李华
网站建设 2026/4/22 17:10:25

惊艳!Youtu-2B打造的数学解题助手效果展示

惊艳!Youtu-2B打造的数学解题助手效果展示 1. 引言:轻量模型也能胜任复杂推理任务 随着大语言模型(LLM)在自然语言理解与生成领域的持续突破,如何在资源受限环境下实现高效、精准的推理能力成为工程落地的关键挑战。…

作者头像 李华