繁体   English   中英

在Rails 2.3中优化ActiveRecord查询

[英]Optimising ActiveRecord queries in Rails 2.3

我正在使用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

基本上就是我在做什么。 当然,有一种更简单,更快捷的方法吗?

使用@set.length将使您无需查询数据库即可获取内存集中的计数,因为它是由ruby非活动记录执行的(例如.count是)

在此处阅读有关内容https://batsov.com/articles/2014/02/17/the-elements-of-style-in-ruby-number-13-length-vs-size-vs-count/

这是该文章的引文

length是一个不属于Enumerable的方法,它是具体类(如String或Array)的一部分,通常在O(1)(恒定)时间内运行。 那是最快的,这意味着使用它可能是一个好主意。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM