从大表子集中随机行的最快查询 - postgresql

时间:2015-09-12 20:14:08

标签: ruby-on-rails postgresql

我正在使用rails和Postgresql。我有一个非常大的表,其中包含一个名为status的列。从此状态列中,许多行的值为1.我想根据状态列中值为1的所有行选择随机行。每行也有一个id,它们是顺序的。

获取此随机行的最快方法是什么?

2 个答案:

答案 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

希望这有帮助。