我有一個模型,我命名爲User
Rails應用程序,它有一個屬性name
(Rails)的時候使用ActiveRecord的。凡和。選擇
比方說,我想找到所有Users
其name
一個特定的字符串相匹配。
在Rails控制檯,我可以這樣做:
OPTION 1
User.where("name LIKE 'string'")
這是非常快的。
OPTION 2
User.select{|u| u.name == "string"}
這是極其緩慢。它適用於小型數據庫,但如果您有成千上萬的用戶,則似乎會嘗試先將所有Users
加載到內存中,然後在塊中對其進行迭代。
這是否意味着選項2總是錯的? .select
的正確用例是什麼,那麼什麼時候優於.where
?
我在我的應用程序中寫了一堆代碼,使用.select
工作正常,但現在我嘗試在非常大的表上使用,我看到我可能做錯了什麼。
但是'.select'的正確用例是什麼,那麼什麼時候比'.where'更適合? (我知道它也可以用來限制列的數據庫查詢,但這不是我所問的用例) – sandre89
增加了一個例子 –
Rails 4添加了.find_by方法,它基本上與where相同 - 它是值得的閱讀Rails風格指南,該指南提供了有關它最常用的用法的更多詳細信息 - https://github.com/bbatsov/rails-style-guide#find_by –