where 子句的執行順序

2022-09-28 08:51:10 字數 1269 閱讀 5382

看**:

複製** **如下:

set statistics io on

set statistics time on

go set statistics profile on

go use pubs

select * from authors

where (au_fname like 's%' or au_fname like 'a%')

and (state like 'ca' or state like 'ut')

and (cast(zip as int) > 90000)

select * from authors

whwww.cppcns.comere (au_fnamemaponfsn like 's%' or au_fname like 'a%')

and (cast(zip as int) > 90000)

and (state like 'ca' or state like 'ut')

select * from authors

where程式設計客棧 (cast(zip as int) > 90000)

and (au_fname like 's%' or au_fname like 'a%')

and (state like 'ca' or state like 'ut')

目的:想驗證where語句的各個條件的查詢順序

環境:sqlserver 2005express版本

步驟:顯示查詢計畫

結果:無一例外,都被統一成了這樣的**

複製** **如下:

|--clustered index scan(object:([pubs].[dbo].[authors].[upkcl_auidind]), where:(convert(int,[pubs].[dbo].[authors].[zip],0)>(90000) and ([pubs].[dbo].[authors].[au_fname] like 's%' or [pubs].[dbo].[authors].[au_fname] like 'a%') and ([pubs].[dbo].[authors].[state] like 'ca' or [p程式設計客棧].[state] like 'ut')))

結論:貌似在2005之前的版本中,where子句的順序是從前往後的。但是又貌似在2005的版本中進行了優化,所有的順序都被統一成了以過濾能力進行排序的語句。

本文標題: where 子句的執行順序

本文位址:

where子句查詢

使用where關鍵進行查詢結果篩選 select 欄位名,欄位名,from表名 where 篩選條件 單條件篩選 單篩選條件 使用運算子進行篩選 單個條件中 注意 如果條件中的值為字元,必須使用單引號括起來 查詢所有的員工的工資資訊 select empno,ename,sal comm as 薪資...

SQL 的where 執行順序

乙個原則,排除越多的條件放到第乙個例子 抄的。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 這樣查詢需...

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...