作者tas72732002 (葱头)
看板Database
标题[SQL ] 关於 where 前後顺序是否会影响效能
时间Mon May 5 23:26:26 2014
资料库名称: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
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.249.120.106
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Database/M.1399303588.A.5EA.html
※ 编辑: tas72732002 (111.249.120.106), 05/05/2014 23:27:43
1F:推 Shiehnpin:记忆中是会受到影响,所以要把严苛的条件放前面 05/06 01:30
※ tas72732002:转录至看板 PHP 05/06 13:35
2F:→ tas72732002:我看了 一些网路上的实验,有人说是没有差别 05/06 14:24
3F:→ tas72732002:我补充一下~ 上述的例子是假设都没有建立INDEX的情况 05/06 14:24
4F:→ tas72732002:blog.sina.com.cn/s/blog_4586764e0100mdif.html 05/06 14:25
5F:→ tas72732002:可以参考上述网址 05/06 14:25
6F:推 bohei:我只知ORACLE有分RBO、CBO,在RBO下会有影响,其他系统不知.. 05/06 14:27
7F:→ tas72732002:所以把滤掉较多rows的条件放在右边吗?是由右往左解析? 05/06 14:47
8F:→ jojobill:没有影响,Index的顺序有影响 05/06 22:34
9F:推 Shiehnpin:jojo大是对的~ 抱歉记错了! 05/07 00:51
11F:推 rockchangnew:Mssql是没影响,index的栏位排序才是重点 05/10 20:24