论坛首页 综合技术论坛

低效的where 1=1

浏览 41493 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2010-07-12  
以前在哪见过,这个东西会影响oracle的执行计划。。。。
0 请登录后投票
   发表时间:2010-07-12  
如果成千上万条数据就能让你的mysql性能非常低,那真的要怀疑你的mysql环境和调优了。首先,你select *  这是程序员需要规避的操作。再次,1=1 只是一个缺省的条件始终是true,对你说数据库做过滤,检索表示怀疑。
0 请登录后投票
   发表时间:2010-07-12  
哪个数据库的查询优化器这么弱智?MySql?

0 请登录后投票
   发表时间:2010-07-12  
看来均是质疑啊。
LZ给出证据呗
0 请登录后投票
   发表时间:2010-07-12  
我刚才对MySQL5.1上的一个2百万条记录的表进行了类似查询,
的确,select count(*) from consumer where 1=1会很慢,但速度跟select count(*) from consumer一样,
(为了去除mysql查询缓存的影响,我用了SQL_NO_CACHE关键字,实际执行的是类似:
select SQL_NO_CACHE count(*) from consumer where 1=1 ;的SQL)
而select count(*) from consumer where 1=0 ;是很快返回0的。

所以我测试的这种数据库下,1=1本身并不慢,它只是一个占位符,是一个无意义的条件,本身对性能产生影响可以忽略。
0 请登录后投票
   发表时间:2010-07-12   最后修改:2010-07-12
如果只有一个where 1=1,和什么条件都没有一样,当然会慢了,但这也不是1=1的错啊
0 请登录后投票
   发表时间:2010-07-12  
Mysql有查询优化器,像这种直接过滤了。。
0 请登录后投票
   发表时间:2010-07-12  
pi1ot 写道
我怎么从来没遇到过需要这么用的时候,举个例子


我们公司在应用ibatis查询的时候,很多这么写,确实比较省事
0 请登录后投票
   发表时间:2010-07-12  
1. 插入10000000条数据到mytable
2. 比较: select * from mytable
          select * from mytable where 1=1
3. 看看执行时间
已被评为好帖!
   发表时间:2010-07-12  
xiaojing3517 写道
看来均是质疑啊。
LZ给出证据呗


1. 插入10000000条数据到mytable
2. 比较: select * from mytable
          select * from mytable where 1=1
3. 看看执行时间
已被评为好帖!
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics