MySQL优化--where条件字段的顺序对效率的影响 (02)
? ? 學生表 Student
| id(編號) | name(名字) | age(年齡) | height(身高) |
| 1 | Tommy | 26 | 170 |
| 2 | Jerry | 23 | 180 |
| 3 | Frank | 30 | 160 |
?
?
?
? ?如表所示,這里只是呈現了3條數據,我們這里假設有1萬條數據,
? ?查詢年齡25歲以上,身高170以上的全部學生
? ?Select * from Student where age > 25 and height > 170;//正常情況下可以這么寫,
假設1:年齡在25歲以上的有8000個學生,而身高170以上的只有10個學生,
? ?上述的SQL的執行順序和查詢的行數應該是:
? ?1.先查詢年齡25歲以上的學生,結果有8000條記錄,
? ?2.再查詢身高170以上的學生,就得在8000條結果里再次判斷,最壞的可以遍歷8000次左右,這效率較低
? ?假如更改上述SQL語句where條件字段的順序,如下:
? ??Select * from Student where height > 170?and age > 25;
? ? ? ? ?那么結果將是:
? ? ? ? ? 1.首先是查詢出身高170以上的學生,結果只有10個;
? ? ? ? ? 2.然后再在這10個結果中查詢出年齡大于25歲的學生,這樣遍歷的次數一下子就減少了很多很多
? 總結:所以,千萬不要以為where語句中字段的順序可以隨便亂寫,應該結合具體情況來安排好順序,以使效率更高,
? ? ? ? ? 當然,如果想效率進一步提高,應該在這兩個字段上建立索引 (題外: 索引的建立以及 什么條件下索引才會被調用)
總結
以上是生活随笔為你收集整理的MySQL优化--where条件字段的顺序对效率的影响 (02)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nginx 日志文件切割
- 下一篇: ImportError: No modu