导读:本期聚焦于小伙伴创作的《如何通过实例快速掌握MySQL索引的创建与使用?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何通过实例快速掌握MySQL索引的创建与使用?》有用,将其分享出去将是对创作者最好的鼓励。

MySQL索引是提升查询性能的重要手段,合理创建和使用索引能够避免全表扫描。下面通过具体例子说明在真实表中如何建立索引并观察查询变化。

如何通过实例快速掌握MySQL索引的创建与使用?

准备示例数据表

先创建一个用户表,包含用户编号、姓名、年龄和所在城市字段,后续基于该表做索引演示。

CREATE TABLE user_info (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL,
  city VARCHAR(30) NOT NULL
);

创建普通索引

如果经常根据姓名查询用户,可以为 name 字段添加普通索引。

CREATE INDEX idx_name ON user_info(name);

添加索引后,使用 EXPLAIN 查看查询计划,可以看到 type 从 ALL 变为 ref,说明走了索引。

EXPLAIN SELECT * FROM user_info WHERE name = '张三';

创建联合索引

当查询常同时限定城市和年龄时,建立联合索引比单字段索引更高效。

CREATE INDEX idx_city_age ON user_info(city, age);

注意最左前缀原则:查询条件包含 city 或同时包含 city 与 age 时索引生效;仅用 age 则不会使用该联合索引。

-- 生效
SELECT * FROM user_info WHERE city = '北京';
-- 生效
SELECT * FROM user_info WHERE city = '北京' AND age = 30;
-- 不生效
SELECT * FROM user_info WHERE age = 30;

常见导致索引失效的写法

在字段上使用函数、类型隐式转换、或以通配符开头的 LIKE 查询,都会让索引失效。

  • 对索引列使用函数:WHERE YEAR(created_at) = 2023
  • 模糊查询以 % 开头:WHERE name LIKE '%三'
  • 字符串字段用数字比较:WHERE name = 100

使用实例总结

通过上面的 user_info 表实例,我们完成了普通索引与联合索引的创建,并利用 EXPLAIN 验证了索引效果。实际开发中,应针对业务高频查询来设计索引,同时避免写出使索引失效的 SQL。定期分析慢查询日志,结合执行计划调整索引结构,才能让 MySQL 保持良好性能。

MySQL索引SQL优化修改时间:2026-07-29 09:03:18

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。