mysql where執行順序


 

where執行順序是從左往右執行的,在數據量小的時候不用考慮,但數據量多的時候要考慮條件的先后順序,此時應遵守一個原則:排除越多的條件放在第一個。

在用MySQL查詢數據庫的時候,連接了很多個過濾條件,發現非常慢。例如:SELECT … WHERE p.languages_id=1 AND t.type=1 AND p.products_id IN (472,474),這樣查詢需要20多秒,雖然在各個字段上都建立了索引。用分析Explain SQL一分析,發現在第一次分析過程中就返回了幾萬條數據:WHERE p.languages_id=1 ,然后再依次根據條件縮小范圍。

然后稍微改變一下WHERE字段的位置之后,速度就有了明顯地提高:WHERE p.products_id IN (472,474) AND p.languages_id=1 AND t.type=1,這樣第一次的過濾條件是p.products_id IN (472,474),它返回的結果只有不到10條,接下來還要根據其它的條件來過濾,自然在速度上有了較大的提升。經過實踐發現,不要以為WHERE中的字段順序無所謂,可以隨便放在哪,應該盡可能地第一次就過濾掉大部分無用的數據,只返回最小范圍的數據。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM