低效的where 1=1
来源:互联网 发布:如何调教一个抖m知乎 编辑:程序博客网 时间:2024/04/28 12:46
也许很多人在开发多条件查询或模糊查询的时候,为保证不管选择哪种过滤条件总保证查询条件为true,于是在where子句后选择1=1或者0=0技巧来满足模糊查询。当然这的确对开发人员来说是一个不错的技巧。于是我在Mysql中通过上千万条的数据测试发现很耗性能。即便是建了常用字段的索引(排序)也没有作用,足以确定1=1很低效,大数据量很耗性能。
select * from t_user where 1=1
因为添加了"1=1"的过滤条件以后数据库系统无法使用索引等优化查询策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)来比较此行是否满足顾虑条件,当表中数据量比较大的时候查询速度会非常慢。
select * from table where 1=1因为table中根本就没有名称为1的字段,所以该SQL等效于select * from table,这个SQL语句很明显是全表扫描,需要大量的IO操作,数据量越大越慢,建议查询时增加必输项,即where 1=1后面追加一些常用的必选条件,并且将这些必选条件建立适当的索引,效率会大大提高
PS:这不是SQL写法的问题,也不是数据库的问题,是自己程序逻辑的问题
- StringBuffer buffer = new StringBuffer("select * from T where 1=1 ");
- for(Map.Enty e : map){
- buffer .appand ("and "+ e.getKey()+" = '"+e.getValue()+"'");
- }
- 低效的“WHERE 1=1”
- 低效的where 1=1
- 低效的where 1=1
- 低效的“WHERE1=1”
- 低效的where1=1
- 低效能的”where1=1”
- 数据库2_低效能的”where1=1”
- 动态组装sql(解决where1=1低效的方案)
- 动态组装sql(解决where1=1低效的方案)
- 动态组装sql(解决where1=1低效的方案)
- where 1<> 1 和where 1=1的用法
- SQL语句中where 1=1 对性能的影响,where 与having的区别,where子句的性能
- where 1=1
- where 1=1
- where 1 = 1
- WHERE 1=1
- where 1 = 1
- where 1=1
- 实验名称: Visual C++6.0 开发环境的使用以及C++函数的应用
- WCF一个Host实现多契约服务
- 关于monodroid的资源
- ulimit & core dump
- oracle忘记登录密码,该怎么办?
- 低效的where 1=1
- asp.net 绑定数据问题
- 设计模式之(十、观察者模式(ObServer)/发布订阅模式(Pblish/Subscribe))
- ASP入门(十二): asp技巧
- read by other session
- 浅谈函数的内聚性
- 最新学习sqlserver2008 集成服务网站
- 基于silverlight的聊天程序
- MD5加密