1. 程式人生 > >SQL的where執行順序

SQL的where執行順序

str blank link 順序 改變 其它 product 索引 lai

SQL的where執行順序

1 mysql 從左到右.

一個原則,排除越多的條件放到第一個

例子:抄的。

SELECT … WHERE p.languages_id = 1 AND m.languages_id = 1 AND c.languages_id = 1 AND t.languages_id = 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 m.languages_id = 1 AND c.languages_id = 1 AND t.languages_id = 1

這樣,第一次的條件是p.products_id IN (472,474),它返回的結果只有不到10條,接下來還要根據其它的條件來過濾,自然在速度上有了較大的提升。

2 ORCAL

從右到左

SQL的where執行順序