where 1=1是sql語句條件邏輯判斷表達式,因爲1=1成立,恆爲真,該表達式1=1將始終返回"真"。這種寫法實際目的是爲了獲取邏輯值"True",其實諸如2=2, 1+2=3,'中'='中'等之類的寫法均可以返回邏輯值"True",只不過1=1的運算開銷更小,故被應用的最廣泛。sql
下面例子將有助於理解有關概念:編輯器
1) select * from t1 where 1=1;索引
-- 實際等效於select * from t1 where true;內存
-- 語句將返回t1中全部的記錄行效率
2) select * from t1 where 1<>1;select
-- 實際等效於 select * from t1 where false;sql語句
-- 語句將返回空記錄集技術
例1)實際上等同於不加任何篩選條件,有些多此一舉,where 1=1的實際意義不如where 1<>1來得有用,當咱們只須要獲取表的字段(結構)信息,而不須要理會實際保存的記錄時,例2)的寫法將是很是可去取的,由於系統僅會讀取結構信息,而不會將具體的表記錄讀入內存中,這無疑節省了系統開銷。數據
這個SQL語句很明顯是全表掃描,須要大量的IO操做,數據量越大越慢,查詢
建議查詢時增長必輸項,即where 1=1後面追加一些經常使用的必選條件,而且將這些必選條件創建適當的索引,效率會大大提升
關注公衆號:UP技術控 獲取更多資訊