在Rails中,您可以找到使用Model.size和的記錄數Model.count。如果您正在處理更復雜的查詢,那么使用一種方法優于另一種方法是否有任何優勢?他們有什么不同?例如,我有用戶的照片。如果我想顯示一個用戶表和他們有多少張照片,那么運行的實例user.photos.size會更快還是更慢user.photos.count?謝謝!
3 回答

紫衣仙女
TA貢獻1839條經驗 獲得超15個贊
正如其他答案所述:
count
將執行SQLCOUNT
查詢length
將計算結果數組的長度size
將嘗試選擇最合適的兩個,以避免過多的查詢
但還有一件事。我們注意到一個size
行為不同count
/ length
完全不同的情況,我想我會分享它,因為它很少被忽視。
如果您
:counter_cache
在has_many
關聯上使用a ,size
將直接使用緩存計數,而不是進行額外查詢。class Image < ActiveRecord::Base belongs_to :product, counter_cache: trueendclass Product < ActiveRecord::Base has_many :imagesend> product = Product.first # query, load product into memory> product.images.size # no query, reads the :images_count column> product.images.count # query, SQL COUNT> product.images.length # query, loads images into memory
Rails指南中記錄了這種行為,但我要么第一次錯過它,要么忘了它。
- 3 回答
- 0 關注
- 714 瀏覽
添加回答
舉報
0/150
提交
取消