联盟消耗太多记忆

时间:2015-02-23 11:51:59

标签: php mysql phpmyadmin

我有三个SQL查询分别从三个不同的表返回类似的列 当我单独运行SQL查询时,每个查询大约需要2秒才能显示相关数据

select a,b,c from table1;  //2 sec
select a,b,c from table2;  //2 sec
select a,b,c from table3;  //2 sec

但是当我在这3个查询中使用 UNION 来显示所有数据时,显示结果需要花费大量时间(phpmyadmin显示运行查询需要2-3分钟)但它需要花费超过3分钟,大约10分左右)

select a,b,c from table1
union
select a,b,c from table2
union
select a,b,c from table3;  //2-3 minutes on sql but >10 minutes in actual

我知道union会做所有计算以消除所有重复的结果,
所以我尝试了 UNION ALL (phpmyadmin显示它花了7秒钟来运行查询,这听起来很正常但实际上花了大约4分钟来显示数据)

select a,b,c from table1
union all
select a,b,c from table2
union all
select a,b,c from table3;  //7-8 seconds on sql but >4 minutes in actual

- 为什么联合查询需要太长时间??? - 此外,当这些查询即将完成时(最后1分钟左右),Apache开始消耗大量内存,超过2GB。为什么消耗这么多内存?

0 个答案:

没有答案