【发布时间】:2015-03-13 11:49:49
【问题描述】:
我正在生成一个 CSV,其中记录了过去 12 个月中我每个月有多少订单。目前我正在检索项目并使用 foreach 循环为每个项目提交以下查询,以检索过去 12 个月中每个月订购的总次数。但是,查询只需要 3 秒多一点,所以当循环进行几千次时,它会导致 MySQL 服务器消失。
如何优化此查询?如果我改用子查询,是否应该减少数据库的负载?
这是查询(改编自here):
SELECT order_item_variant_alias_id, DATE(DATE_FORMAT(order_progress_time, '%Y-%m-01')) AS `trueMonth`, COUNT(*) AS count
FROM tbl_order_progress
JOIN tbl_order_items ON order_progress_order_id = order_item_order_id
JOIN tbl_product_variant_aliases ON order_item_variant_alias_id = product_variant_alias_id
JOIN tbl_product_variants ON product_variant_id = product_variant_alias_variant_id
GROUP BY product_variant_alias_id, DATE(DATE_FORMAT(order_progress_time, '%Y-%m-01'))
HAVING order_item_variant_alias_id = 1
【问题讨论】:
标签: php mysql sql query-optimization