搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > 码农改变世界 > 常见的sql使用的Mysql中的实践3(Mysql优化系列10)

常见的sql使用的Mysql中的实践3(Mysql优化系列10)

码农改变世界 2020-02-20

    今天继续介绍两种常见的sql使用坑,我们一起看看这个坑到底怎么让我们的头发一撮一撮阵亡。

1、or或in在sql中的使用情况

     我们平时常用的两个条件查询,or 和in的使用。用它查询时,mysql不一定使用索引,mysql内部优化器会根据检索比例、表大小等多个因素整体评估是否使用索引,索引尽量少用。具体什么原因我们继续往下看。


EXPLAIN SELECT * FROM employees WHERE name = 'zhangsan' or name = 'lisi';

2、范围查询优化


给某一个a 字段增加一个单值索引

explain select * from t1 where a >=1 and a <=2000;

没走索引原因:mysql内部优化器会根据检索比例、表大小等多个因素整体评估是否使用索引。比如这个例子,可能是由于单次数据量查询过大导致优化器最终选择不走索引优化方法:可以讲大的范围拆分成多个小范围

explain select * from t1 where a >=1 and a <=500;

explain select * from t1 where a >=555 and a <=1000;


可是我们改变为范围变小时又走了索引,in 和or 都是范围查找,那么不一定加了索引就走索引。是根据查询数据大小,走全表扫描还是索引底层去判定那个速度更快。


这些都是一般情况,特殊情况我们后面继续找坑。




版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《常见的sql使用的Mysql中的实践3(Mysql优化系列10)》的版权归原作者「码农改变世界」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注码农改变世界微信公众号

码农改变世界微信公众号:gh_155e896ddb67

码农改变世界

手机扫描上方二维码即可关注码农改变世界微信公众号

码农改变世界最新文章

精品公众号随机推荐