如何解决处理大量的COUNT个查询报告
| 我正在汇总一份报告,该报告显示拥有这些产品的公司的产品统计信息。该报告以我需要的形式包含多达150个“计数”,因为我们要用15种不同统计类别的12种产品类型的计数填充表格。 这是模型的设置。恐怕有点复杂!Company is the entity accessing the report.
Company has many Products through Matchings; and
Product has many Companies through Matchings.
Matching belongs_to Order.
Example report:
___________|_Available/Active/Light Available/Active/Heavy (+12 columns)__
Perishable |
Intangible |
(+10 rows) |
产品类型在“产品”表中(它们在报告的左侧运行)。
报告顶部的类别是三个条件的组合:两个来自产品,一个来自订单。
示例-对于“易腐”行中的一个单元格,向我显示订单类型为“有效”,产品的权重为“轻”,产品状态为“可用”的匹配项数。
上面的查询本身并不太坏,但是如果我继续这样下去,我将对该报表有约170个查询-这既不雅致又非常不切实际。有没有一种神奇的ActiveRecord方法来处理这种情况?
解决方法
您总是可以创建一个后台作业来定期运行并预先缓存结果,或者预先生成整个报告。这将使您的用户不必坐下来等待170个查询运行,而我认为具有稍微陈旧的结果是可以接受的。
至于它的优雅和实用性,您唯一可以使用的魔术就是SQL。您的对象模型不是为报告而构建的,不要为使用原来的工具而感到难过。
, 有一个统计宝藏可以做这种事情。它确实允许您缓存统计信息。
我已经将它用于计数和平均值之类的轻量级统计,但是从未使用过基准测试,如果您担心性能,那肯定是您想要做的事情。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。