2019-03-01
閱讀量:
915
sql語句中where的執(zhí)行順序是怎樣的
問題描述:
如果一條SQL語句中的where有多個查詢條件,那么他們的執(zhí)行順序是怎樣的呢?
比如:select * from table where pid=1 AND tid=12
是先查找滿足pid的還是查找滿足tid的?
解決方法:
先查找有索引的。對于沒有索引的,誰先誰后沒多少區(qū)別,反正總是要掃一遍。
做了個簡單測試,生成100w組數(shù)據(jù),每組包含1個key,2個int a, b,其中a只取值0,1,2,3,b取值為0~999999,然后:
mysql> select count(*) from x where a=2 and b=499999;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.24 sec)
mysql> select count(*) from x where b=499999 and a = 2;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.28 sec)
測試結(jié)果可復(fù)現(xiàn)。似乎是先搜索最后的條件,然后在結(jié)果集里再搜索前一個條件。






評論(0)


暫無數(shù)據(jù)
推薦帖子
0條評論
0條評論
0條評論
0條評論