加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读