WHERE 1=1的性能疑问~

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

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

20 同行回答

ljbupc ljbupc 软件开发工程师 上海安硕科技
1=1 没有问题,在不需要查数据的时候用1=2 在有时候才有可能会有问题..如果只是1=2 的条件,虽然不会走索引,但也没有什么问题.如果有其他查询条件,然后加1=2 就可能有问题.还有就是转换为动态sql解析参数的时候,容易把后面的2解析为参数.然后执行计划就可能有问题....显示全部
1=1 没有问题,在不需要查数据的时候用1=2 在有时候才有可能会有问题..
如果只是1=2 的条件,虽然不会走索引,但也没有什么问题.
如果有其他查询条件,然后加1=2 就可能有问题.
还有就是转换为动态sql解析参数的时候,容易把后面的2解析为参数.
然后执行计划就可能有问题. 收起
互联网服务 · 2012-03-27
浏览2212
ppjava2009 ppjava2009 系统工程师 用友汽车信息科技(上海)有限公司
应该没有影响吧,我们的应用大多都是这种模式,拼凑SQL显示全部
应该没有影响吧,我们的应用大多都是这种模式,拼凑SQL 收起
互联网服务 · 2012-03-07
浏览2201
moonriver moonriver 软件开发工程师 朗新科技(中国)有限公司系统集成部
回复 2# xxzmxx     楼主说的对,一般是在动态SQL中拼条件,我们项目中使用ibatis,里面用了不少这种写法的!显示全部
回复 2# xxzmxx


    楼主说的对,一般是在动态SQL中拼条件,我们项目中使用ibatis,里面用了不少这种写法的! 收起
互联网服务 · 2012-02-07
浏览2190
drdb2 drdb2 系统工程师 se
回复 10# mdkii nice input显示全部
回复 10# mdkii

nice input 收起
互联网服务 · 2012-02-07
浏览862
xxzmxx xxzmxx 软件开发工程师 招行软件中心
where 1=1主要用于拼凑Sql的场景,不然当你拼凑的条件为空是,sql就变成 select 。。。from table where ,就会报错。它可能容易让开发忽视的是,如果条件拼凑为空,那么将会是全表扫描不过如果后续还有谓词过滤,那么就会使用谓词过滤啊。...显示全部
where 1=1主要用于拼凑Sql的场景,不然当你拼凑的条件为空是,sql就变成 select 。。。from table where ,就会报错。它可能容易让开发忽视的是,如果条件拼凑为空,那么将会是全表扫描
不过如果后续还有谓词过滤,那么就会使用谓词过滤啊。 收起
互联网服务 · 2012-02-03
浏览918

    提问者

    qqdzyh
    数据库管理员 苏宁电器
    评论345

    相关问题

    相关资料

    相关文章

    问题状态

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