mysql - Union Select - CPU 负载过重

标签 mysql select union cpu-usage

我在这个 sql 查询中遇到了一个主要问题:

select
`produsereceptie`.`receptie_id` AS `document_id`,`receptie` AS `receptie`,
`produsereceptie`.`produs_id` AS `produs_id`,
`produse`.`cod` AS `cod`,
`produse`.`denumire` AS `denumire`,
`produsereceptie`.`gestiune` AS `gestiune`,
sum(`produsereceptie`.`qty`) AS `qtyIn`,
ifnull((select sum(`productie`.`qtyConsumat`) FROM `productie` where (`productie`.`produs_id` = `produsereceptie`.`produs_id`) group by `produsereceptie`.`produs_id`),0) AS `qtyOut` 
from (`produsereceptie` join `produse` on((`produse`.`id` = `produsereceptie`.`produs_id`))) 
group by `produsereceptie`.`produs_id` 
union select `comenzimonitorizari`.`idx` AS `document_id`,
'productie' AS `productie`,`produse`.`id` AS `id`,
`produse`.`cod` AS `cod`,`produse`.`denumire` AS `denumire`,
'productie' AS `productie`,sum(`comenzimonitorizari`.`produse_conforme`) AS `qtyIn`,
ifnull((select sum(`produseiesire`.`qty`) from `produseiesire` 
where (`produseiesire`.`produs_id` = `produse`.`id`) 
group by `comenzimonitorizari`.`produs_cod`),0) AS `qtyOut` 
from (`comenzimonitorizari` join `produse` on ((`produse`.`cod` = `comenzimonitorizari`.`produs_cod`))) 
group by `comenzimonitorizari`.`produs_cod`;

sql解释在附图中(http://postimg.org/image/vysy9i6ab/)

非常欢迎任何帮助,因为我不知道如何优化它。

平均时间约为 9-10 秒...而我在这里面对的是 hell 。

最佳答案

尝试使用 UNION ALL 而不是 UNION。希望对您有帮助

更新

我无法测试数据,但我会说问题出在这一行:

ifnull((select sum(`productie`.`qtyConsumat`) FROM `productie` where (`productie`.`produs_id` = `produsereceptie`.`produs_id`) group by `produsereceptie`.`produs_id`),0) AS `qtyOut` 

首先尝试使用类似的内容删除此查询 replacin-it

0 AS `qtyOut`

你现在怎么样?

关于mysql - Union Select - CPU 负载过重,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770696/

相关文章:

php - Mysql 不返回特定数字的选择查询

mysql - where 子句中的 SQL 别名

MySQL:如果值发生变化,则从计数中删除

javascript - 如何为两个元素设置一个事件处理程序?

mysql - 为什么我的两个查询的并集排序不正确?

Mysql联合子查询优化

PHP echo() MySQL 结果包含 <> 字符?

PHP/MySql 选择与回复分组的评论

php - UNION表查询错误数据

php - UPDATE 的 mysqli_affected_rows 有时在全行匹配时返回 0