MYSQL对另一个表的子查询计数的性能

时间:2018-06-12 14:52:36

标签: mysql sql performance cakephp

您好我正在查看CakePHP 2.x网站上的一些非常旧的代码。

有两个表order和order_products。订单表包含2500多条记录,order_products表包含38000多条记录。

以下查询大约需要16秒才能完成:

SELECT `Order`.`id` as id, 
(SELECT SUM(sub_total) AS total FROM order_products WHERE (order_id = `Order`.`id`) GROUP by order_id) AS `Order__order_total` 
FROM `orders` AS `Order`;

据我所知,应该更改此查询以包含订单总表,但我的问题是这种小型记录集的性能是否正常?

1 个答案:

答案 0 :(得分:1)

我建议将其写成:

{ "$replaceRoot" : { newRoot: "$nestedObjects" } }

然后你需要SELECT o.id, (SELECT SUM(op.sub_total) AS total FROM order_products op WHERE op.order_id = o.id ) G AS `Order__order_total` FROM `orders` o; 上的索引。性能应该会有显着提高。