我正在使用rails和Postgresql。我有一个非常大的表,其中包含一个名为status的列。从此状态列中,许多行的值为1.我想根据状态列中值为1的所有行选择随机行。每行也有一个id,它们是顺序的。
获取此随机行的最快方法是什么?
答案 0 :(得分:0)
您可以使用OFFSET
选项
SELECT * FROM users WHERE status = 1 OFFSET random()*I LIMIT 1;
I是表格中的行数。
答案 1 :(得分:0)
尝试使用 ActiveRecord 解决方案,例如:
Model_name.where(status: 1).limit(1).order("RANDOM()")
或者:
Model_name.where(status: 1).order("RANDOM()").first
希望这有帮助。