試圖做一個簡單的Model.all.page(1)
但是每當調用.page時,它都會創建一個SQL COUNT調用。 (我的實際代碼比上面更復雜,但是爲了便於閱讀而進行了簡化。)有沒有辦法阻止.page調用SQL計數?我正在處理數以百萬計的產品,並且此調用正在使頁面刷新需要額外2秒的時間才能加載。我已經有了自己的自定義計數,因此我不需要這個.page計數。Rails模型上的頁面調用也調用計數
編輯:Def不使用.all。不好的例子抱歉。
繼承人一個非常簡單的例子,基本上是我簡而言之代碼: Product.limit(1).page(1)
用我的實際代碼SQL生成:(1495.3ms) SELECT COUNT(*) FROM 'products' LEFT OUTER JOIN...
我加入的產品表,我並不需要是計數,因此,我有我自己的計數方法,我想要使用,並不需要.page來產生它自己的計數。
:
您可以在選項通過像這樣?通常你會使用'paginate'方法。如果你有另一種方法,你可以使用':total_entries'選項來傳遞它。 'Model.paginate(:page => 1,:total_entries => 50)' –
很確定COUNT查詢不是由您認爲是的語句生成的。雖然它與分頁有關,但它可能是另一種說法。一些試圖找出總頁數來爲您創建分頁的東西。你有沒有100%跟蹤整個問題到#page call?如果是的話那麼如何? –
@HeliosdeGuerra,我可以同時做兩個.paginate並傳入選項或.page和.per_page。兩者都給出我需要的分頁結果,但是兩者都會導致COUNT查詢 TanelSuurhans當我執行Product或User或其他任何Model.limit(1).page(1)並且它100%插入SQL COUNT調用時,I會說這是跟蹤。我不知道任何其他方式來追蹤它。如果我使用Model.page(1),它仍然返回SQL計數以及查詢信息,但會遍歷所有產品(顯然我在調試時避免這種情況) –