gpt4 book ai didi

postgresql - Postgres 中的快速随机行选择

转载 作者:行者123 更新时间:2023-11-29 11:04:54 25 4
gpt4 key购买 nike

我在 postgres 中有一个表,其中包含几百万行。我在网上查了一下,发现如下

SELECT myid FROM mytable ORDER BY RANDOM() LIMIT 1;

它有效,但它真的很慢......是否有另一种方法来进行该查询,或者直接选择随机行而不读取所有表的方法?顺便说一下,'myid' 是一个整数,但它可以是一个空字段。

最佳答案

您可能想尝试使用 OFFSET ,如

SELECT myid FROM mytable OFFSET floor(random() * N) LIMIT 1;

Nmytable 中的行数.您可能需要先做一个 SELECT COUNT(*)计算出 N 的值.

更新(作者:Antony Hatchkins)

您必须使用 floor这里:

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;由于隐式舍入到最接近的 int,因此返回 0 行。

关于postgresql - Postgres 中的快速随机行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5297396/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com