如何優化 MySQL 商品銷售情況統計查詢,提升查詢速度?

如何優化 MySQL 商品銷售情況統計查詢,提升查詢速度?

如何優化 mysql 商品銷售情況統計查詢

該查詢旨在統計商品銷售情況,涉及商品和訂單表。然而,當針對特定時間段進行統計時,查詢速度變得非常緩慢。以下是一些優化建議:

  1. 取消 create_time 索引
    這兩個表的 create_time 索引可能導致索引膨脹,從而降低查詢性能。可以考慮移除這些索引。
  2. 修改 orders 表 goods_id 索引
    orders 表中的 goods_id 索引可以修改為復合索引 (create_time, goods_id, amount, status)。這將提高在指定時間范圍內按商品 id、金額和狀態分組的查詢效率。
  3. 優化 sql 查詢
    以下優化后的 sql 查詢:

    SELECT g.title, COUNT(*)                       AS total, COALESCE(SUM(o.amount), 0)     AS total_amount, COALESCE(SUM(IF(o.status = 1, o.amount, 0)), 0)     AS success_amount, COALESCE(SUM(IF(o.status = 2, o.amount, 0)), 0)     AS failed_amount, COALESCE(SUM(o.status = 1), 0) AS success_total, COALESCE(SUM(o.status = 2), 0) AS failed_total FROM orders AS o JOIN goods AS g ON g.id = o.goods_id WHERE o.create_time BETWEEN 'xxx' AND 'yyy' GROUP BY o.id ORDER BY total DESC LIMIT 10

    其中 xxx 和 yyy 分別代表查詢時間段的開始和結束時間。

此外,對于小數據量(幾十萬條記錄),考慮使用 sqlite 可能是另一種更有效的選擇。它以其快速查詢速度而聞名,無需使用復雜的優化技術。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享