3 回答
TA贡献1875条经验 获得超5个赞
这要看你如何用它,毕仅where 1=1这种表达式真假判断是要产生系统开销的。用得其所可提高效率减小开销,反之亦然。例如:
select * from t1 where 1=1;
等效于
select * from t1;
前者where 1=1必然为真,此判断为画蛇添足,属于无用功、徒增系统开销。
如果只需要查看数据表字段信息无需查看具体记录,那么下列写法将非常可取
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
就这个啦!!
原因很简单
b.utj=1不满足的话,那么系统就直接找下一个数据
用的in的话,如果第一个不满足,那么就匹配第二个,第二个不满足,在匹配第三个
,全部不匹配 才找下一条数据!!
这个就可以看到了,可能用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')
添加回答
举报