【发布时间】:2012-05-09 00:35:41
【问题描述】:
我正在使用 sqlite db 执行查询,我从数据库中提取了相当大的通话记录数据集。在同一页面上,我想显示通话记录中每天的计数细分,因此我对数据库执行了大约 30 次计数查询。
有没有一种方法可以过滤我最初检索的集合并对内存中的集合执行计数,这样我就不必运行那些连续查询?我需要这些计数用于图形和显示目的,但即使有日期索引,运行初始查询和所有计数查询也需要大约 10 秒。
我基本上要问的是有没有办法对返回的记录进行计数或对其进行分析,或者有没有更聪明的方法来缓存这些数据?
@set = Record.get_records_for_range(date1, date2)
while date1 < date2
@count = Record.count_records_for_date(date1)
date1 = date1 + 1
end
基本上就是我正在做的事情。肯定有更简单、更快捷的方法吗?
【问题讨论】:
-
您是否有理由不能简单地按日期分组以获得每日总数?例如。
Record.count :id, :group => 'date'。我猜你最终仍然会运行两个查询,但它比 30 好。也许我错过了一个皱纹。 -
我想我可能不知道 activerecord API。我什至没有意识到你能做到这一点。
标签: ruby-on-rails sqlite activerecord