闫少波的JAVA之路

你在一生中,可以有所作为的时候只有一次。那就是现在,然而,许多人却在悔恨过去和担忧未来之中浪费了大好时光。...

in、or与union all的性能对比

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

阅读更多
上一篇Hibernate数据查询
下一篇软件工程师的10种特质
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭