in、or与union all的性能对比

原创 2012年12月26日 15:05:11

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 不同之处在于前者会过滤掉相同的数据而后者会将符合条件的数据都列出来,无论数据值有无重复。

 

UNION 的语法如下:

[SQL 语句 1] UNION [SQL语句 2]

UNION ALL 的语法如下:

[SQL 语句 1] UNION ALL [SQL语句 2]

值得注意的是UNION, UNION ALL的一个限制是两个 SQL 语句所产生的栏位需要是同样的数据种类。

使用UNION代替OR 提升查询性能

昨天一位铁哥们通过QQ找我帮忙,问下面这个SQL能否优化 SQL> set timing on SQL> set autotrace on SQL> select count(*) rowcou...

mysql in与or效率比较

在网上一直看到的是or和in的效率没啥区别,一直也感觉是这样,前几天刚好在看《mysql数据库开发的36条军规》的文章,里面提到了or和in的效率问题,文中提到or的效率为O(n),而in的效率为O(...
  • cws1214
  • cws1214
  • 2014年06月27日 12:17
  • 7748

MySQL中大于小于,IN,OR,BETWEEN性能比较

在MySQL中经常会有朋友问关于大于小于,IN,OR,BETWEEN,哪个性能更好? 我想有很多朋友会用它们但确实不知道大于小于,IN,OR,BETWEEN性能哪个更好吧,下面总结一下关于大于小于,...

优化案例2-----or 等价改写 union all 的经典案例

今天一个之前帮他优化过很多SQL的哥们找我说,有一个分页SQL 很慢,程序debug监控到:前端显示出来第一页的数据就要30秒钟,一共要显示1万2000多条数据,在PL SQL DEV里面 手工执行它...

mysql简单的索引和in、or、union unionall语句查询速度

MYSQL描述: 一个文章库,里面有两个表:category和article。category里面有10条分类数据。article里面有20万条。article里面有一个"article_categ...

sql优化实战:把full join改为left join +union all(从5分钟降为10秒)

今天收到一个需求,要改写一个报表的逻辑,当改完之后,再次运行,发现运行超时。 因为特殊原因,无法访问客户的服务器,没办法查看sql的执行计划、没办法知道表中的索引情况,所以,尝试从语句的改写上来优化。...
  • yupeigu
  • yupeigu
  • 2016年12月09日 18:18
  • 972

mysql通过将or改成union来优化sql性能问题一例

某系统测试环境有支SQL执行时间较长,开发人员请求dba协助优化。 原SQL如下: SELECT   g.id,           ----省略-----     FROM    g,  ...

oracle中union和union all区别与性能分析

[ 概要 ] 经常写sql的同学可能会用到union和union all这两个关键词, 可能你知道使用它们可以将两个查询的结果集进行合并, 那么二者有什么区别呢? 下面我们就简单的分析下. ...
  • zdp072
  • zdp072
  • 2014年05月13日 23:34
  • 7172

mysql 实战 or、in与union all 的查询效率

OR、in和union all 查询效率到底哪个快。 网上很多的声音都是说union all 快于 or、in,因为or、in会导致全表扫描,他们给出了很多的实例。 但真的union al...

mysql 实战 or、in与union all 的查询效率

OR、in和union all 查询效率到底哪个快。 网上很多的声音都是说union all 快于 or、in,因为or、in会导致全表扫描,他们给出了很多的实例。 但真的union al...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:in、or与union all的性能对比
举报原因:
原因补充:

(最多只允许输入30个字)