2014-01-22 54 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