3 回答

TA貢獻1875條經驗 獲得超5個贊
這要看你如何用它,畢僅where 1=1這種表達式真假判斷是要產生系統開銷的。用得其所可提高效率減小開銷,反之亦然。例如:
select * from t1 where 1=1;
等效于
select * from t1;
前者where 1=1必然為真,此判斷為畫蛇添足,屬于無用功、徒增系統開銷。
如果只需要查看數據表字段信息無需查看具體記錄,那么下列寫法將非??扇?br/>select * from t1 where 1<>1;
這樣系統將直接輸出空記錄集,而不會花費資源檢索具體的記錄數據到內存中,這無疑會提高了效率。

TA貢獻1828條經驗 獲得超3個贊
SELECT b.id FROM t_address a, t_unit b WHERE b.utj=1 AND b.ufreeze=2 AND a.id=b.uads and a.sid=3
就這個啦?。?br/>原因很簡單
b.utj=1不滿足的話,那么系統就直接找下一個數據
用的in的話,如果第一個不滿足,那么就匹配第二個,第二個不滿足,在匹配第三個
,全部不匹配 才找下一條數據?。?br/>這個就可以看到了,可能用IN的話,效率可能會減慢3倍,打個比方

TA貢獻1816條經驗 獲得超4個贊
第一種 exists與not exists
select * from table1 t1 where exists(select columnName from table2 t2 where t1.columnName2 = t2.columnName2)
第二種,in,not in的用法
select * from table1 where columnName in(select columnName from table2 where columnNane = 'condition')
第三種,any,all與比較運算的用法
-- 與任意一個比較返回真
select * from table1 where columnName > any(select columnName from table2 where columnNane = 'condition')
-- 與所有的值比較返回真
select * from table1 where columnName > all(select columnName from table2 where columnNane = 'condition')
添加回答
舉報