postgresql – 快速随机行选择在Postgres

postgresql – 快速随机行选择在Postgres,第1张

概述我有一个表在postgres包含几百万行。我在互联网上检查,我发现以下 SELECT myid FROM mytable ORDER BY RANDOM() LIMIT 1; 它的工作,但它真的很慢…有另一种方式来进行查询,或直接的方式来选择一个随机的行没有读所有的表?顺便说一句’myid’是一个整数,但它可以是一个空字段。 谢谢 您可能想要尝试OFFSET,如 SELECT myid FROM 我有一个表在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。

总结

以上是内存溢出为你收集整理的postgresql – 快速随机行选择在Postgres全部内容,希望文章能够帮你解决postgresql – 快速随机行选择在Postgres所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1172838.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存