PostgreSQL 选择 20 条随机记录 [重复]

PostgreSQL select 20 random records [duplicate]

提问人:PeeHaa 提问时间:5/23/2011 最后编辑:OMG PoniesPeeHaa 更新时间:6/1/2017 访问量:13227

问:

如何在 SQL (PostgreSQL) 查询中选择 20 个随机行?

SQL PostgreSQL

评论


答:

28赞 ditkin 5/23/2011 #1
SELECT column FROM table
ORDER BY RANDOM()
LIMIT 20

评论

10赞 Johan 5/23/2011
请注意,尽管这非常非常慢,但如果您有超过 20k 行,请不要这样做。
0赞 Chris Cirefice 7/22/2014
@Johan我不确定自发布此问题以来是否对此进行了优化,但是 20k + 行显示排序键和用作排序键的任何其他列(例如,)。EXPLAINRANDOM()rating
0赞 Johan 7/22/2014
@ChrisCirefice,如果列的基数较差(或未编制索引),则该列将具有相同的成本,因为只有在条件正确的情况下才能使用索引。没有更多细节,这就是我能说的。rating
3赞 Chris Cirefice 7/23/2014
@Johan 好点子!我创建了一个 SQLFiddle 来演示该语句的一些性能差异。结果是,按主键排序速度最快,紧随其后的是按索引排序。然后,按任何未编制索引的字段进行排序会显著增加成本。但是,这并不比按非索引列排序慢得多(至少对于 250k 行)。但是,对于几百万行,结果可能会大不相同......我没有测试那么多。ORDER BYORDER BY RANDOM()