我有两节课。 User
和Review
(用户有很多评论)。
我正在尝试找到最佳方法从User.reviews
我可以使用user.reviews.order("RANDOM()").limit(n)
但是如果我没有弄错的话,如果我有大量评论的用户,这对数据库会非常沉重......
我使用Postgres作为我的数据库。
思想?
答案 0 :(得分:2)
独立于数据库的解决方案是:
user.reviews.where(id: user.reviews.pluck(:id).sample(2))
我总是喜欢独立于数据库的解决方案,否则根本不使用ActiveRecord。显然,与RANDOM()
方法相比,此解决方案会执行两个数据库请求。性能方面,这是一个棘手的问题,因为数据库可以缓存这些请求。它无法缓存RANDOM()
请求。