WHERE 1=1的性能疑问~

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

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

查看其它 19 个回答hongtao2000的回答

这个会走索引不是因为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
浏览2168

回答者

hongtao2000 最近回答过的问题

回答状态

  • 发布时间:2012-02-07
  • 关注会员:1 人
  • 回答浏览:2168
  • X社区推广