开发一个最佳解决方案/设计,为报告引擎汇总许多数据库行

时间:2017-09-19 16:28:44

标签: database algorithm architecture

问题:我正在开发一个报告引擎,显示有关农场检测到多少只蜜蜂的数据(蜜蜂只是这里的一个例子)

我有100个设备,每分钟计算在农场中检测到多少只蜜蜂。数据库的外观如下:

enter image description here

因此在给定的一周内可能会有数十万行。

农民想要一份报告,显示某一天每小时有多少蜜蜂来。我开发了两种方法:

  1. 服务器从数据库中获取当天所有100,000行,并将其过滤掉。服务器使用大量内存来执行此操作,我觉得这是一个强力解决方案

  2. 我有一个存储过程,它返回一个临时创建的表,每小时为每个设备收集的蜜蜂数量总计。服务器使用此表,不需要处理100,000行。

  3. enter image description here

    此返回(24 * 100)行。然而,它需要比我预期的要长得多〜

    enter image description here

    有哪些优秀的候选解决方案可用于开发一种解决方案,该解决方案可以整合和汇总这些数据,而无需花费30秒来总结一天的数据(我可能需要几个月的时间来划分数天)?

1 个答案:

答案 0 :(得分:1)

如果性能是您最关心的问题,那么您可以直接在数据库上进行相当多的操作。我会尝试在time_collected_bees上对表进行索引,以便它可以更快地过滤到100K行。如果数据库正在扫描整个表格以查找相关条目,我猜这就是你发生减速的地方。

如果你正在使用SQL Server,你可以尝试查看execution plan,看看实际上放慢了什么。

在构建非常复杂且难以维护的内容之前,先让数据库优化更具外观。