日期:2014-05-18  浏览次数:20489 次

sql where 条件的执行顺序问题
求助,在mssql中 如果我的where 筛选条件有10个,那这个10个条件是从第一个开始还是从最后一个开始呢?

------解决方案--------------------
先按逻辑运算优先级,然后再按从左到右执行
------解决方案--------------------
HTML code
執行策略
1、在 FROM 子句中產生資料表的聯結。若使用明確的 JOIN 語法,則 JOIN 的結果就很明顯。如果 FROM 字句中含有多個以逗號分隔的資料表名稱,這就是資料表的隱含式跨產品聯結。


2、若有 WHERE 子句,便對步驟 1 所得結果的資料列執行搜尋條件,只保留符合條件的資料列。


3、如果 SELECT 子句中沒有任何彙總運算,而且如果沒有 GROUP BY 子句,則跳到步驟 7。


4、如果有 GROUP BY 子句,則會將步驟 2 運算所得的資料列分為多個群組,因此所有群組資料行在每一個群組的所有資料列中具有相同的值。如果沒有 GROUP BY 子句,則將所有資料列放入一個群組中。


5、若有指定 HAVING 子句,則針對步驟 4 所產生的每一個群組套用 HAVING 子句,只有符合 HAVING 子句的群組才會被保留。


6、對於步驟 5 所產生的每一個群組,根據該群組評估來自 SELECT 子句中的選取清單,以便只產生一個結果資料列。 


7、若 SELECT 子句包含 DISTINCT 關鍵字,則在步驟 6 所得的結果中刪除重複的資料列。


8、如果有 ORDER BY 子句,則根據其順序運算式所指定的方式排列步驟 7 的結果。

------解决方案--------------------
最靠近where的最先被使用,也就是where条件是按照顺序依次被使用的。