[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