首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SQL查询时, 当禁止运用 where 1=1

2012-10-06 
SQL查询时, 当禁止使用 where 11源自:http://www.iteye.com/topic/710338???也许很多人在开发多条件查询

SQL查询时, 当禁止使用 where 1=1

源自:

http://www.iteye.com/topic/710338

?

?

?也许很多人在开发多条件查询或模糊查询的时候,为保证不管选择哪种过滤条件总保证查询条件为true,于是在where子句后选择1=1或者0=0技巧来满足模糊查询。当然这的确对开发人员来说是一个不错的技巧。于是我在Mysql中通过上千万条的数据测试发现很耗性能。即便是建了常用字段的索引(排序)也没有作用,足以确定1=1很低效,大数据量很耗性能。?

? select * from t_user where 1=1?

?? 因为添加了"1=1"的过滤条件以后数据库系统无法使用索引等优化查询策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)来比较此行是否满足顾虑条件,当表中数据量比较大的时候查询速度会非常慢。?


--------------------?
maoone2003的回答甚是不错(红色部分) 作为开题人 我采纳...?

select * from table where 1=1因为table中根本就没有名称为1的字段,所以该SQL等效于select * from table,这个SQL语句很明显是全表扫描,需要大量的IO操作,数据量越大越慢,建议查询时增加必输项,即where 1=1后面追加一些常用的必选条件,并且将这些必选条件建立适当的索引,效率会大大提高?
PS:这不是SQL写法的问题,也不是数据库的问题,是自己程序逻辑的问题
?

2 楼 thinkblog 2011-11-07   嗯 我当初看到别人这么用 我也这么写过.其实,现在想想,为什么别人那么多?这么做真的会带来好处吗?

热点排行