在我的测试机器上,表 arg_rec 包含 800K 行,通常该表将包含超过 15M 行。我想运行以下查询:
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;
此查询从风力涡轮机数据中提供每日平均风速和总功率。STE_ID
在我的测试机器上,这个查询在, PNT_NO
, YR
,上的组合索引执行 10 分钟后超时MN
,这只是主键列的一个子集。如果没有索引,查询将在几分钟后完成。
我正在运行几乎所有的 MySQL 安装,除了调整服务器之外,我还想了解更多关于处理此问题的其他方法,例如:
- 是否可以基于此查询创建视图并缓存结果?
- 是否有更高级的索引功能来封装 YR、MN、DY、HR、MI、SC 对应记录时间戳的年、月、日等字段的事实?
- 使用应用程序的业务层复制数据是否更好?