2009-08-05 69 views
4

我有一个我想要显示总计的集合,并且想法是为我需要的每个总计使用缓存。不过,我也需要深入研究数据集。所以最有可能的是我将不得不加载收藏。那么我还应该使用缓存还是只使用计算?Rails计数器缓存与计算

回答

3

答案取决于集合的大小。如果集合非常大(1000或物品),那么缓存可能是一个好主意。如果它只有少数几个,并且你在表上有索引以快速找到相关的行,那么缓存可能不是必需的,特别是如果你必须钻取集合。

正如所有这些类型的问题一样,正确的答案通常是“取决于”。这很大程度上取决于您的要求和数据等。

+0

那么每个集合很可能是在1000更有可能的是50 -200行。我想我会先尝试最简单的方法! – Cameron 2009-08-05 13:38:10

3

正如Stephen ODonnell所说,“...取决于收集的大小。”但是,您还需要考虑每页将执行此计算的次数。例如,如果您正在创建博客应用程序,并且帖子/索引页面显示10条博客帖子,每篇博文的底部都有“155条评论”,那么通过使用计数器缓存可以避免很多数据库调用。

我建议只用活动记录搜索来尝试它,但添加“包含”选项。假定Post#123有50条评论。

p = Post.find_by_id(123) 
p.comments.each do {|c| puts c } #Do something meaningful instead... 

将生成51个数据库调用,其中1个用于Post,每个评论用1个。相反,你可以这样做:

Post.find_by_id(123, :include => [:comments]) 

现在,它会自动查询的意见,当你搜索后,倒塌51个查询到1