您好我正在查看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`;
据我所知,应该更改此查询以包含订单总表,但我的问题是这种小型记录集的性能是否正常?
答案 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;
上的索引。性能应该会有显着提高。