[SQL ] 关于 where 前后顺序是否会影响效能

楼主: tas72732002 (葱头)   2014-05-05 23:26:26
数据库名称:MySQL
数据库版本:5.1.33
内容/问题描述:
我想请问一下,假设account是帐号, is_ban(1:代表被锁帐号)
(1) select * from where account='123' and is_ban=0;
(2) select * from where is_ban=0 and account='123';
以上述两句sql,第1句sql是否优于第二句还是一样??
以第1句sql来说数据库运作方式是否是先找出account='123'的rows再找该rows is_ban=0,
还是说先筛选account='123' 再筛选is_ban=0,两个筛选出来的rows再做and??
较常理来说先找account='123'再找is_ban=0会优于先找is_ban再找account='123'吗?
最后题外问个问题 where account='123' and is_ban=0; database换按照sql由左而右的语法进行筛选是嘛?? 也就是先筛选account='123' 再筛选is_ban=0
作者: Shiehnpin (XDman)   2014-05-06 01:30:00
记忆中是会受到影响,所以要把严苛的条件放前面
楼主: tas72732002 (葱头)   2014-05-06 14:24:00
我看了 一些网络上的实验,有人说是没有差别我补充一下~ 上述的例子是假设都没有建立INDEX的情况blog.sina.com.cn/s/blog_4586764e0100mdif.html可以参考上述网址
作者: bohei (run and fall)   2014-05-06 14:27:00
我只知ORACLE有分RBO、CBO,在RBO下会有影响,其他系统不知..
楼主: tas72732002 (葱头)   2014-05-06 14:47:00
所以把滤掉较多rows的条件放在右边吗?是由右往左解析?
作者: jojobill (..)   2014-05-06 22:34:00
没有影响,Index的顺序有影响
作者: Shiehnpin (XDman)   2014-05-07 00:51:00
jojo大是对的~ 抱歉记错了!http://ppt.cc/pOQu
作者: rockchangnew (rock)   2014-05-10 20:24:00
Mssql是没影响,index的字段排序才是重点

Links booklink

Contact Us: admin [ a t ] ucptt.com