SQL中的1=1影响性能吗?
类别:数据库 浏览量:237
时间:2015-1-29 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
您可能感兴趣
- zabbix如何配置监控(zabbix监控mysql的实例方法)
- mysql自增主键创建过程(深入谈谈MySQL中的自增主键)
- mysql记录binlog的方式(MySQL使用binlog日志做数据恢复的实现)
- 为什么mysql主键要设置自增列(浅谈MySQL中的自增主键用完了怎么办)
- SQL Server作业
- dedecms统计功能(DedeCMS sql 调用数字递增标签以及修改方法)
- mysql中date_format日期格式化
- 宝塔数据库不小心删了(宝塔面板MySQL数据库经常自动停止的解决方法)
- mysql怎么把行变列(MySQL 中行转列的方法)
- mysql数据库如何删除重复记录(mysql数据库删除重复数据只保留一条方法实例)
- SQL Server与Oracle数据类型的对应关系
- SQLServer获取临时表所有列名或是否存在指定列名的方法(SQLServer获取临时表所有列名或是否存在指定列名的方法)
- sqlserver数据库还原教程(SQL Server通过重建方式还原master数据库)
- MySQL 使用事件(Events)完成计划任务(MySQL 使用事件Events完成计划任务)
- 宝塔mysql怎么设置优化(宝塔面板mysql内存占用高如何优化)
- mysql索引失效的几种情况(Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的问题)
- Google 推出了一个游戏生成器,让不会编程的你也能自己设计游戏(推出了一个游戏生成器)
- 二胎家庭老大爱闹情绪,用这招很有效(二胎家庭老大爱闹情绪)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
- 这部动漫中的女孩子,可比101女孩更加励志(这部动漫中的女孩子)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9