MySQL:where后多个条件谁先执行?

solverpeng 发布于 2016/06/06 19:26
阅读 2K+
收藏 1

问题:

where a>10 and b < 20 类似这样的sql 语句  它是怎么执行的 ?先过滤b < 20的,还是先过滤 a>10 的?

大家讨论一下,最好能找出依据。

加载中
0
pantrick
pantrick
explain select * from sometable where a>10 and b<20
solverpeng
solverpeng
恩 谢谢 我自己去学习一下。
solverpeng
solverpeng
explain是什么意思?
0
张亦俊
张亦俊
这个谁先执行有差么……给我设计就从左到右执行
0
Tuesday
Tuesday

楼主这问题太逗B了.

你应该问and or的优先级.   

and 优于 or. 并且由左到右顺序. 


也就是别人常说的, 主键条件, 放前面, 如下.

差:  where name="sb" AND id=10 

优: where id=10 AND name="sb"

solverpeng
solverpeng
回复 @聽雨人 : 恩 你说的对。我去学习一下explain。
聽雨人
聽雨人
mysql的执行计划有你说的这么不堪么? @楼主 ,mysql会对各个查询条件计算分数,来决定执行顺序,你爱咋写就咋写。百度下explain
0
sami
sami
联合索引会有影响吗
0
Ambitor
Ambitor

引用来自“Tuesday”的评论

楼主这问题太逗B了.

你应该问and or的优先级.   

and 优于 or. 并且由左到右顺序. 


也就是别人常说的, 主键条件, 放前面, 如下.

差:  where name="sb" AND id=10 

优: where id=10 AND name="sb"

这个评论差不多,网上很多说什么sql执行的顺序是从左到右 或者从右到左,其实不然 会优化的,根据那个能排除最多的记录 就先执行哪个,当然这个是简单的说法~~
0
page_zxy
page_zxy

先查询把范围缩小,再到缩小后的范围查找

0
l
lmjbj
从右像左 执行的  需要把  筛选出最大数据的  条件放到右边
返回顶部
顶部