MYSQL的UNION和UNION ALL的区别

时间:2021-09-02 07:16:23
UNION 是MYSQL的联合查询,目的是将两个表的数据组合到一起,然后再进去查询处理。其用法如下:

语句1:SELECT * FROM ((SELECT * FROM table1) UNION (SELECT * FROM table2)) ORDER BY addtime DESC LIMIT 0,5
上面这条MYSQL是将table1和tabl2两个表的数据组合到一起,然后使用addtime字段进行排序,然后取最前面的五条记录

语句2:SELECT * FROM ((SELECT * FROM table1) UNION ALL (SELECT * FROM table2)) ORDER BY addtime DESC LIMIT 0,5
这条SQL语句看上去与上面一条语句差不多,但是多了一个ALL,而洽洽是因为多了这个ALL,让程序的效果提升了一大截,这是为什么呢?因为语句1先是把两表的数据组合到一起,然后会把所有重复的数据去掉,再返回。而语句2只是简单的把数据组合到一起,省掉了去掉重复数据的那一步,所以性能大大提升了。

如果确保两表之间没有重复数据情况下,请尽量使用UNION ALL,你会发现意想不到的结果。

本文出自 “” 博客,请务必保留此出处http://scgywx.blog.51cto.com/1441269/366154