我在使用 PostgreSQL 9 作为数据库的 rails 中有以下查询。
@user_random = User.where(:id => User.where(:pubic_profile_visible => true).order('random()').limit(1).select(:id).collect(&:id)).first
然后在数据库服务器上:
解释计划
Query plan Limit (cost=48655.53..48655.53 rows=1 width=4)
Query plan -> Sort (cost=48655.53..50880.35 rows=889930 width=4)
Query plan Sort Key: (random())
Query plan -> Seq Scan on users (cost=0.00..44205.88 rows=889930 width=4)
Query plan Filter: (pubic_profile_visible AND (deleted_at IS NULL))
关于为什么这会导致瓶颈的任何建议?谢谢