ITPub博客

首页 > 数据库 > Oracle > in、or与union all的性能对比

in、or与union all的性能对比

Oracle 作者:hurp_oracle 时间:2016-01-05 14:53:46 0 删除 编辑

in、or与union all的性能对比

对于某大表的查询

使用or:
SELECT * FROM article
WHERE article_category=2
OR article_category=3
// 执行时间:11.0777

使用 in:
SELECT * FROM article
WHERE article_category IN (2,3)
// 执行时间:11.2850

使用union all:
SELECT * FROM article
WHERE article_category=2
UNION ALL
SELECT * FROM article
WHERE article_category=3
// 执行时间:0.0261

 

总之,性能上union all的方式完胜,但是网上说并不总是这样,目前尚未发现对索引列或非索引列这样查询时的例外情况,希望大家参与讨论

UNION, UNION ALL的简单分析:

UNION, UNION ALL 指令的目的是将两个 SQL语句的结果合并起来。从这个角度来看, UNION 跟 JOIN 有些类似,因为这两个指令都可以由多个表格中撷取资料。UNION和 UNION  ALL 不同之处在于前者会过滤掉相同的数据而后者会将符合条件的数据都列出来,无论数据值有无重复。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29446986/viewspace-1971824/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: buffer busy waits
请登录后发表评论 登录
全部评论

注册时间:2014-01-17

  • 博文量
    152
  • 访问量
    647360