当前位置: 首页 > news >正文

SQL 索引速查:CREATE / DROP / SHOW INDEX 用法全解

在数据库优化中,索引(Index) 是最关键的性能工具之一。

无论你是后端开发、数据分析师,还是在准备数据库面试,

都必须掌握索引的创建、删除和查看命令。

本文将带你系统梳理三大核心命令:

👉 CREATE INDEX、DROP INDEX、SHOW INDEX,

并配合常见实战场景,帮你一文掌握索引操作要点。

一、什么是索引(Index)

索引就像书本的“目录”,

它能让数据库在查找数据时不需要全表扫描,

而是通过索引快速定位目标记录,从而极大提升查询速度。

举个例子:

当你执行

SELECT * FROM users WHERE email = 'test@example.com';

如果没有索引,数据库会一行一行扫描整张表;

但如果 email 字段上有索引,数据库能立刻定位那一行。

二、CREATE INDEX —— 创建索引

语法格式

CREATE INDEX index_name

ON table_name (column_name);

这条语句会在指定表的某个字段上创建索引。

比如,你想在用户表 users 的 email 字段上建立索引,可以写:

CREATE INDEX idx_email ON users (email);

📌 注意事项:

索引名建议有前缀,比如 idx_字段名,方便维护;

单列索引适合频繁出现在 WHERE 或 JOIN 条件中的字段;

不建议给低选择性的字段建索引,比如性别、布尔类型等。

三、CREATE UNIQUE INDEX —— 创建唯一索引

唯一索引能保证字段值不重复。

例如用户邮箱通常应唯一:

CREATE UNIQUE INDEX idx_unique_email ON users (email);

当插入重复的邮箱时,数据库会直接报错,

从而保证数据的唯一性。

四、CREATE INDEX 多字段联合索引

当你经常根据多个字段进行查询时,可以建立联合索引。

例如:

CREATE INDEX idx_name_age ON users (name, age);

⚠️ 记住联合索引的最左前缀原则:

如果创建的是 (name, age) 索引,那么:

能用到索引的查询:WHERE name = 'Tom' 或 WHERE name = 'Tom' AND age = 25

不能用到索引的查询:WHERE age = 25(因为跳过了最左列)

五、DROP INDEX —— 删除索引

索引并不是越多越好。

如果字段更新频繁或索引长期不被使用,就需要删除。

语法如下:

DROP INDEX index_name ON table_name;

示例:

DROP INDEX idx_email ON users;

删除后,查询会重新回到全表扫描模式。

因此在删除前,最好通过 EXPLAIN 查看索引使用情况。

六、SHOW INDEX —— 查看索引

如果想知道当前表有哪些索引,可以用:

SHOW INDEX FROM table_name;

例如:

SHOW INDEX FROM users;

数据库会列出:

索引名称

索引字段

是否唯一

索引类型(BTree、FULLTEXT、HASH)

这对调试与优化非常有帮助。

七、实战建议与优化技巧

合理使用索引

经常出现在 WHERE、JOIN、ORDER BY 中的字段值得建索引。

不要盲目建太多索引,否则写入性能会显著下降。

命名规范

普通索引:idx_column

唯一索引:uniq_column

联合索引:idx_col1_col2

定期检查无用索引

使用 SHOW INDEX + EXPLAIN 结合慢查询日志,

判断哪些索引长期未被使用。

避免函数操作导致索引失效

比如:

WHERE DATE(create_time) = '2025-10-11'

会让索引失效,建议改为:

WHERE create_time >= '2025-10-11' AND create_time < '2025-10-12'

八、总结

本文快速梳理了三大核心命令:

CREATE INDEX —— 创建普通、唯一、联合索引

DROP INDEX —— 删除索引

SHOW INDEX —— 查看索引信息

📌 面试高频提示:

索引的本质是提高查询效率;

创建索引要结合查询场景;

滥用索引可能反而拖慢写入性能。

学会合理使用索引,是从“写 SQL”到“优化 SQL”的第一步。

http://www.dtcms.com/a/474713.html

相关文章:

  • ru后缀的网站中信建设有限责任公司地址
  • 后端开发学习路线:从入门到精通
  • linux mutex
  • 河南中原建设公司网站wordpress代码实现
  • 什么网站动物和人做的网络设计中网络设备选择的原则
  • 做设计接外快在哪个网站成都注册公司的流程及手续
  • WPF中核心接口 INotifyPropertyChanged​
  • 【完整源码+数据集+部署教程】 面包种类识别系统源码和数据集:改进yolo11-aux
  • qData数据中台商业版实操全流程演示(2025年10月版)
  • 南昌网站建设公司价位广州市门户网站建设
  • 机器视觉3D定位引导成功的一半机械臂TCP工具,什么是机械臂TCP工具?为什么TCP如此重要?如何定义和设置TCP?
  • 自动化测试,预制菜和大厨现制
  • 计算机本科论文 网站建设东莞网站关键词优化怎么做
  • Linux 通配符与正则表达式(含实战案例+避坑指南)
  • GO语言篇之Slice
  • 长春建站培训班广告设计制作公司简介
  • git简介,版本控制系统,储存方式
  • 南京制作网站建站模板公司网站建设工资怎么样
  • .net 6 signalr
  • 从零到一:基于.NET 9.0构建企业级AI智能体对话平台的实战之旅
  • 网站建设费用标准wordpress 只剩纯文本
  • mysql基础【函数 与 约束】
  • 昆明免费建站模板玉石网站建设的定位
  • 什么视频网站可以做链接地址新闻发稿114
  • 重庆网站建设模板制作蒙自做网站的公司
  • 什么是web前端?
  • Win10,在ESP分区添加PE系统,隐藏VTOYEFI分区
  • Qwen3(通义千问3)、OpenAI GPT-5、DeepSeek 3.2、豆包最新模型(Doubao 4.0)通用模型能力对比
  • 小学做试卷的网站wordpress跳转页面
  • 外国设计网站推荐网页制作作业下载