设为首页收藏本站
搜索
查看: 1137|回复: 0
打印 上一主题 下一主题

低效的Where 1=1

[复制链接]
跳转到指定楼层
1#
shine 发表于 2010-7-20 12:09:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  也许很多人在开发多条件查询或模糊查询的时候,为保证不管选择哪种过滤条件总保证查询条件为true,于是在where子句后选择1=1或者0=0技巧来满足模糊查询。当然这的确对开发人员来说是一个不错的技巧。于是我在Mysql中通过上千万条的数据测试发现很耗性能。即便是建了常用字段的索引(排序)也没有作用,足以确定1=1很低效,大数据量很耗性能。

  select * from t_user where 1=1

   因为添加了"1=1"的过滤条件以后数据库系统无法使用索引等优化查询策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)来比较此行是否满足顾虑条件,当表中数据量比较大的时候查询速度会非常慢。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|flysoft Computer Ltd ( 粤ICP备05071605号 )  

GMT+8, 2025-7-8 06:08 , Processed in 0.143123 second(s), 16 queries .

Powered by Discuz! X3.2

© 2001-2013 Design S!|平潭

快速回复 返回顶部 返回列表