应用报错,临时表空间已满,跑数据中断。

查看了什么sql语句引起的,发现

select count(1)*********union***;

遍历了两个千万级别的表,占了5G左右的临时表空间,把union 换成union all后,这条语句的花费减小了几十倍。

那么union和union all有什么区别呢?

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

Union All:对两个结果集进行并集操作,包括重复行,不进行排序;

union消耗的资源比union all多很多,因为,需要去掉重复行,还需要排序。