2
表arg_rec在我的测试机器上包含800K行,通常这个表将保存超过15M行。我想运行以下查询:加快GROUP BY,SUM和AVG查询
SELECT STE_ID, PNT_NO, YR, MN, AVG(AVR_WS) AS AVR_WS, SUM(AVR_PW) FROM arg_rec GROUP BY STE_ID, PNT_NO, YR, MN;
该查询给出了风机数据的日平均风速和总功率。在我的测试机器上,该查询在执行10分钟后超时,其合并索引为STE_ID
,PNT_NO
,YR
,MN
,它只是主键列的一个子集。在没有索引的情况下,查询在几分钟后完成。
我有相当多股票MySQL安装运行,除了调整我也想更多地了解其他的方法来处理这个问题,如服务器:
- 是否有可能创造基于此查询的视图并缓存结果?
- 是否有更高级的索引功能来封装YR,MN,DY,HR,MI,SC对应记录时间戳的年,月,日等字段的事实?
- 我最好只使用我的应用程序的业务层复制数据?
通过使用适当的索引从10分钟下降到0.7秒。 – klonq 2012-07-24 15:37:45
连接按顺序排列在哪里? – 2013-11-15 11:08:20
可以将联接写为where子句查询。因此,连接首先根据索引序列,然后按顺序依次选择列。 – Omesh 2013-11-19 12:05:25