我有一个我想要显示总计的集合,我的想法是为我需要的每个总数使用缓存。但是,我还需要深入研究数据集。所以我很可能无论如何都要加载这个集合。那么我还应该使用缓存还是只使用计算?
答案 0 :(得分:4)
我建议只使用活动记录搜索来尝试,但添加“include”选项。假设帖子#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。
答案 1 :(得分:3)
答案取决于集合的大小。如果集合非常大(1000或者项目),那么缓存可能是一个好主意。如果只有少数几个并且你在表上有索引以快速找到相关的行,那么可能不需要缓存,特别是如果你必须钻进集合中。
正如所有这些问题一样,正确答案通常是“取决于”。这在很大程度上取决于您的要求和数据等。