专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

mysql精确查询函数,Mysql中哪些场景下会导致使用了索引但索引失效_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 19:22:58       共计:3603 浏览
mysql精确查询函数,Mysql中哪些场景下会导致使用了索引但索引失效?

程序员应该都知道,为了提高数据库的查询速度,我们可以对表上的一个字段或者多个字段建立索引,但是有些 SQL 错误的写法,可能会导致索引失效。

01. 查看执行计划

如何判断 SQL 的执行是做了全表扫描还是走了索引,不是凭感觉判断 SQL 执行的快慢,而是要看 SQL 的执行计划;很多工具都提供了查看执行计划的功能,不过最原始的方法,还是通过 explain 进行查看;下面的 SQL,是否使用的索引,一目了然。

1. 没有索引

explain select * from user where gender = 'M';

2. 有索引

explain select * from user where name = 'Tom';02. 索引失效

1. 使用 like 时,% 在前面不走索引(在后面可以走索引);

explain select * from user where name like '%om';

2. 数据类型出现隐式转化,比如我们这里手机号 mobile 字段设置的是 varchar 类型,但是查询的时候用的是数字,那么就【可能】不走索引。

explain select * from user where mobile = 13800000000;

3. 在索引字段上使用 not,<>,!= ;

explain select * from user where mobile <> '13800000000';explain select * from user where mobile != '13800000000';

4. 对索引字段上使用函数;

explain select * from user where length(mobile) < 10

5. 联合索引,如果查询条件不满足最左匹配原则,则不会走索引;

6. or 会使索引失效,尽管 or 左右的条件都有索引;

explain select * from user where name = 'Tom' or mobile = '13800000000';

总之,MySQL 的索引优化和索引失效还是挺复杂的,主要体现在 MySQL 随着版本升级,有一些我们熟知的技巧可能会不再正确,我们现在认为一定会索引失效的 SQL 写法,可能会变成走索引,所以这也是为什么我在上文中,多次用到【可能】会造成索引失效的原因。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:学Python发展如何_数据库 | ·下一条:mysql 或查询 索引,Java开发如何更改MySQL数据库datadir目录之MySQL数据库索引实现_数据库

Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有