提问人:PeeHaa 提问时间:5/23/2011 最后编辑:OMG PoniesPeeHaa 更新时间:6/1/2017 访问量:13227
PostgreSQL 选择 20 条随机记录 [重复]
PostgreSQL select 20 random records [duplicate]
问:
如何在 SQL (PostgreSQL) 查询中选择 20 个随机行?
答:
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 + 行显示排序键和用作排序键的任何其他列(例如,)。EXPLAIN
RANDOM()
rating
0赞
Johan
7/22/2014
@ChrisCirefice,如果列的基数较差(或未编制索引),则该列将具有相同的成本,因为只有在条件正确的情况下才能使用索引。没有更多细节,这就是我能说的。rating
3赞
Chris Cirefice
7/23/2014
@Johan 好点子!我创建了一个 SQLFiddle 来演示该语句的一些性能差异。结果是,按主键排序速度最快,紧随其后的是按索引排序。然后,按任何未编制索引的字段进行排序会显著增加成本。但是,这并不比按非索引列排序慢得多(至少对于 250k 行)。但是,对于几百万行,结果可能会大不相同......我没有测试那么多。ORDER BY
ORDER BY RANDOM()
下一个:随机数生成器只生成一个随机数
评论