SELECT * FROM T_Employee WHERE 1=1 这看似非常优美的解决了问题,殊不知这样很可能会造成非常大的性能损失,因为使用添 加了“1=1”的过滤条件以后数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫 对每行数据进行扫描(也就是全表扫描)以比较此行是否满足过滤条件,当表中数据量比较大的 时候查询速度会非常慢。因此如果数据检索对性能有比较高的要求就不要使用这种“简便”的方 式。
调试欢乐多
我也搜索过相关文章,关键就是走不走索引的问题。好像经过优化,还是会走索引的我在2008和2005都用过这种方法,主要用于拼接而成的sql语句,因为where 后面的条件是不确定的,所以就加上了1=1,没有什么影响的。在2000上没有测试过这种情况,你有2000的环境,可以自己测试一下会不会有影响的
再举个例子如果1=2 and 后面再加一些Filter,你会看到SQL Server压根就不考虑AND后面的操作,直接到1=2就返回了,因为知道这个是不成立的,没必要走后面的步骤了。