WHERE 1=1的性能疑问~

今天在网上看到这个文章  低效的“WHERE 1=1”     文章说:使用添加了“1=1”的过滤条件以后数据库系统就无法使用索引等查询优化策略,数据库系统将会被迫对每行数据进行扫描(也就是全表扫描)以比较此行是否满足过滤条件,当表中数据量比较大的时候查询速度会非常慢。因此如果数据检索对性能有比较高的要求就不要使用这种“简便”的方式。   

让我有点晕了 ,没觉得有什么问题啊 ·~~来跟大家讨论讨论·~~
参与21

20同行回答

ljbupcljbupc软件开发工程师上海安硕科技
1=1 没有问题,在不需要查数据的时候用1=2 在有时候才有可能会有问题..如果只是1=2 的条件,虽然不会走索引,但也没有什么问题.如果有其他查询条件,然后加1=2 就可能有问题.还有就是转换为动态sql解析参数的时候,容易把后面的2解析为参数.然后执行计划就可能有问题....显示全部
1=1 没有问题,在不需要查数据的时候用1=2 在有时候才有可能会有问题..
如果只是1=2 的条件,虽然不会走索引,但也没有什么问题.
如果有其他查询条件,然后加1=2 就可能有问题.
还有就是转换为动态sql解析参数的时候,容易把后面的2解析为参数.
然后执行计划就可能有问题.收起
互联网服务 · 2012-03-27
浏览2136
xu5762173xu5762173数据库管理员Ess
顶一个显示全部
顶一个收起
证券 · 2012-03-22
浏览2143
foxnet2005foxnet2005工程师IBM
受教了显示全部
受教了收起
IT分销/经销 · 2012-03-22
浏览2145
ppjava2009ppjava2009系统工程师用友汽车信息科技(上海)有限公司
应该没有影响吧,我们的应用大多都是这种模式,拼凑SQL显示全部
应该没有影响吧,我们的应用大多都是这种模式,拼凑SQL收起
互联网服务 · 2012-03-07
浏览2123
galzerogalzero数据库管理员交通银行太平洋信用卡中心
还有种情况 存储过程执行delete from t 时,后面没有where条件的话,会有个警告所以会加上where 1=1显示全部
还有种情况 存储过程执行delete from t 时,后面没有where条件的话,会有个警告
所以会加上where 1=1收起
金融其它 · 2012-03-01
浏览2145
喜欢寂寞喜欢寂寞产品经理火热贸易
现在是基于cbo 的A man of words and not of deeds is like a garden full of weeds.Nike Free Run Nike Free Run 2 Nike Lunarglide 3显示全部
现在是基于cbo 的











A man of words and not of deeds is like a garden full of weeds.
Nike Free Run Nike Free Run 2 Nike Lunarglide 3收起
金融其它 · 2012-02-09
浏览2199
weiruan85weiruan85数据库管理员ibm
回复 10# mdkii      这跟优化器的设计原则估计有关,;以前是基于规则的(1=1),而现在更加智能基于成本了显示全部
回复 10# mdkii


     这跟优化器的设计原则估计有关,;以前是基于规则的(1=1),而现在更加智能基于成本了收起
政府机关 · 2012-02-08
浏览2125
wp28556259wp28556259软件架构设计师CMBC
回复 13# hongtao2000     我知道,楼主说在看到的文章上说WHERE 1=1就不会走索引,所以我故意这么写的~显示全部
回复 13# hongtao2000


    我知道,楼主说在看到的文章上说WHERE 1=1就不会走索引,所以我故意这么写的~收起
银行 · 2012-02-07
浏览2128
这个会走索引不是因为where 1=1导致,而是因为返回的字段只有visit_id,范围索引就可以获得全部需要的数据。 我做了一个测试db2expln -d ubtdb -g -q "select VISIT_ID   from DW_DPA.TSA_DPA_VISIT where 1=1" -t V ...wp28556259 发表于 2012-2-3 15:17 ...显示全部
这个会走索引不是因为where 1=1导致,而是因为返回的字段只有visit_id,范围索引就可以获得全部需要的数据。

我做了一个测试
db2expln -d ubtdb -g -q "select VISIT_ID   from DW_DPA.TSA_DPA_VISIT where 1=1" -t
V ...
wp28556259 发表于 2012-2-3 15:17

收起
2012-02-07
浏览2135
moonrivermoonriver软件开发工程师朗新科技(中国)有限公司系统集成部
回复 2# xxzmxx     楼主说的对,一般是在动态SQL中拼条件,我们项目中使用ibatis,里面用了不少这种写法的!显示全部
回复 2# xxzmxx


    楼主说的对,一般是在动态SQL中拼条件,我们项目中使用ibatis,里面用了不少这种写法的!收起
互联网服务 · 2012-02-07
浏览2114

提问者

qqdzyh
数据库管理员苏宁电器

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2012-02-03
  • 关注会员:1 人
  • 问题浏览:15466
  • 最近回答:2012-03-27
  • X社区推广