登录
首页 >  数据库 >  MySQL

MySQL 索引在 like 查询中的使用情况及覆盖索引优化 like 查询

来源:SegmentFault

时间:2023-01-29 10:10:45 258浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《MySQL 索引在 like 查询中的使用情况及覆盖索引优化 like 查询》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

通配符开头的模糊查询

like 查询以通配符开头时无法使用索引而使用全表扫描。

EXPLAIN SELECT * FROM staffs WHERE `name` like '%July%';
EXPLAIN SELECT * FROM staffs WHERE `name` like '%July';

1611477938909.png

通配符结尾的模糊查询

like 查询以通配符结尾可以使用索引,类型为范围(range)。

EXPLAIN SELECT * FROM staffs WHERE `name` like 'July%';

1611477946723.png

使用覆盖索引的模糊查询

使用覆盖索引可以解决 like 查询以通配符开头无法使用索引问题。

ALTER TABLE `tbl_user` ADD INDEX idx_user_nameAge(`name`, `age`);

EXPLAIN SELECT id FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT `name` FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT age FROM tbl_user WHERE `name` like '%July%';

EXPLAIN SELECT id,`name`,age FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT id,`name` FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT id,age FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT `name`,age FROM tbl_user WHERE `name` like '%July%';

1612184204877.png

超出覆盖索引范围的模糊查询

超出覆盖索引范围无法使用索引。

EXPLAIN SELECT * FROM tbl_user WHERE `name` like '%July%';
EXPLAIN SELECT id,`name`,age,email FROM tbl_user WHERE `name` like '%July%';

本篇关于《MySQL 索引在 like 查询中的使用情况及覆盖索引优化 like 查询》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表