如何優化 MySQL 商品銷售情況統計查詢的慢速問題?

如何優化 MySQL 商品銷售情況統計查詢的慢速問題?

優化mysql 商品銷售情況統計查詢慢的問題

給定的sql 查詢用于統計指定時間段內商品銷售情況,但當統計范圍較寬(例如昨天、本周等)時,查詢速度非常慢。優化建議如下:

  1. 去除不必要的索引:

    • goods 表的create_time 索引
    • orders 表的create_time 索引
  2. 調整orders 表的索引:

    • 將(goods_id) 索引修改為(create_time, goods_id , amount, status)
  3. 重寫查詢:

    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
  4. 考慮使用sqlite

    • 對于數據量級較小的查詢(幾百萬以內),sqlite 可能提供更佳的性能,減少數據同步的麻煩。

經過這些優化措施,應該可以顯著提高查詢速度,滿足寬范圍時間段統計的需求。

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