in、or与union all的性能对比

来源:互联网 发布:剑灵最美灵女捏脸数据 编辑:程序博客网 时间:2024/05/22 02:09

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语句所产生的栏位需要是同样的数据种类。

原创粉丝点击