数据库在进行查询的时候,经常看到有的人使用where 1=1和1=0,1=2等的查询,这样写主要是一些程序员为了拼凑动态的sql语句。
在不定数量查询条件情况下,1=1可以很方便的规范语句。例如一个查询可能有name,age,height,weight约束,也可能没有。
SQL Server中的1=1影响性能吗?
1、查询分析器在代数树优化阶段就把1=1 直接给过滤掉了。这个功能就是查询优化器中所谓的“Constant Folding”。
2、假设查询分析器在代数树优化阶段没有把where 1=1这种情况直接过滤掉。比如语句select * from table where a=1 这个语句,SQL Server估计的行数会是:
a列的选择率*表中采样的总行数
因此,当Where 1=1 and a=1时,结果就变为
1*a列的选择率 *表中采样的总行数=a列的选择率 *表中采样的总行数
因此无论是否有1=1 and,查询分析器都会估计相同的行数,从而拥有同样的执行计划,因此SQL Server中不影响性能。
欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) | Powered by Discuz! X3.2 |