[英]Are you in favour of in-memory filtering or using SQL queries on large number of records in a ruby on rails app?
我正在編寫一個Rails finder查詢,該查詢將檢索按每篇文章的已批准和公開評論的最高數量排序的文章記錄。
在Ruby on Rails中運行此類查詢的最佳方法是哪種?
通常,開發人員是否贊成內存過濾或運行復雜的SQL查詢?
讓數據庫發揮作用總是最好的。 只需使用where子句/ join / etc編寫查詢。 並使用排序依據僅返回您需要的記錄。 通過返回更多記錄,然后將數據過濾在rails中,浪費了跨“電線”(在DB和應用程序服務器之間)和內存的數據量。 數據庫針對此類事情進行了優化。 根據需要在表上使用索引。
另一個類似的帖子: http : //www.mail-archive.com/rubyonrails-talk@googlegroups.com/msg13484.html
Web應用程序的最慢部分幾乎總是數據庫。
運行復雜的查詢會花費您一些時間,但提供的數據將是有意義的,而且不會那么大。
運行基本查詢將使您擁有大量必須處理的數據集。 如此大的數據導入時間也可能很長。
我會堅持1知道您可以優化查詢和添加索引。
幾乎總是,您應該使用SQL來過濾結果集。 數據庫要更加優化性能,並且對代碼進行排序通常會導致N + x次查詢,從而可能會降低性能。
可能會執行所需操作的查找器可能是這樣的:
Article.where('id in (
SELECT article_id
FROM comments
WHERE approved = ? AND public = ?
ORDER BY count(article_id) DESC
LIMIT 10
)', true, true)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.