2014-01-22 29 views
0

我知道模型是否有has_many关联,我们可以使用'counter_cache'。Rails有没有提高无关联模型计数查询性能的方法?

但是,如果模型没有关联,我可以使用哪种方法来提高计数性能?

我看着Google,但没有找到任何有用的资源。

+0

如果没有has_many关联,你会计算什么?你能提供一个例子吗? – Abdo

+0

我想这样做,因为我猜这会提高性能。但是我对SQL不熟悉,所以我问是否可能。 – user3087000

回答

0

我不认为有这样的事情“计数器缓存”的红宝石阵列或枚举。但是,如果您遇到性能问题,则可以自己创建一个。

你可以在某个地方存储一个整数,当你从你的数组中推入/弹出元素时,你可以递增/递减整数。

+0

谢谢。我不熟悉SQL。如果我添加一列来存储总数的整数,并获取最后一个值,我会看到它会创建一个SQL查询,如'SELECT'lyrics。“* FROM”lyrics“ORDER BY”lyrics“。”“id”DESC限制1“。我想问一下,如果比运行'SELECT COUNT(*)FROM'lyrics''SQL Query更好? – user3087000

+0

计数查询将比'select *'执行得更好 –

+0

不确定选择计数(*)会比使用LIMIT选择*更快。我只是对这个“Ebook.benchmark {100.times {Ebook.first.id}}”和“Ebook.benchmark {100.times {Ebook.count}}”进行了基准测试,它看起来像第一个,相当于“ SELECT'ebooks'。* FROM'ebooks' LIMIT 1' is faster。 – Abdo