postgresql – 快速随机行选择在Postgres
发布时间:2020-12-13 16:53:15 所属栏目:百科 来源:网络整理
导读:我有一个表在postgres包含几百万行。我在互联网上检查,我发现以下 SELECT myid FROM mytable ORDER BY RANDOM() LIMIT 1; 它的工作,但它真的很慢…有另一种方式来进行查询,或直接的方式来选择一个随机的行没有读所有的表?顺便说一句’myid’是一个整数,
我有一个表在postgres包含几百万行。我在互联网上检查,我发现以下
SELECT myid FROM mytable ORDER BY RANDOM() LIMIT 1; 它的工作,但它真的很慢…有另一种方式来进行查询,或直接的方式来选择一个随机的行没有读所有的表?顺便说一句’myid’是一个整数,但它可以是一个空字段。 谢谢
您可能想要尝试OFFSET,如
SELECT myid FROM mytable OFFSET floor(random()* N)LIMIT 1; N是mytable中的行数。你可能需要先做一个SELECT COUNT(*)来计算出N的值。 更新(由Antony Hatchkins) 你必须在这里使用地板: SELECT myid FROM mytable OFFSET floor(random()*N) LIMIT 1; 考虑一个2行的表; random()* N产生0 <= x < 2和例如SELECT myid FROM mytable OFFSET 1.7 LIMIT 1;返回0行,因为隐式取整为最接近的int。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |