您的位置:首页 > 数据库 > SQL语言 > 正文

SQL中的1=1影响性能吗?

更多 时间:2015-1-29 类别:数据库 浏览量:237

SQL中的1=1影响性能吗?

SQL中的1=1影响性能吗?

数据库在进行查询的时候,经常看到有的人使用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中不影响性能。

 

标签:SQL
您可能感兴趣