针对分组的优化数据库

时间:2018-04-06 15:19:57

标签: mysql sql database-performance

我有两张桌子,看起来像这样

设备

  • device_id(PK)
  • 其他东西

记录(+ -500k行)

  • id(autoincrement PK)
  • device_id(FK)
  • 日期
  • 方向(1或2)
  • 金额

我需要能够做以下事情的查询

  1. 获取两个日期之间一台设备的金额总和
  2. 获取两个日期之间所有设备的金额总和(按device_id分组)
  3. 获取两个日期之间所有设备的金额总和并区分方向(按照device_id,方向分组)
  4. 我的查询现在看起来像这样

    1. SELECT SUM(amount) as total FROM Record WHERE device_id='anId' AND date BETWEEN min_date AND max_date
    2. SELECT radar_id, SUM(amount) as total FROM Record WHERE date BETWEEN min_date AND max_date GROUP BY device_id
    3. SELECT radar_id, SUM(amount) as total FROM Record WHERE date BETWEEN min_date AND max_date GROUP BY device_id, direction
    4. 第一个查询在可接受的时间内完成(在1s以下),但其他查询需要30s +。

      有没有办法提高效果?

0 个答案:

没有答案