首页 > 解决方案 > 在没有 ID 的情况下通过 rand() 更快地订购

问题描述

我正在使用 postgresql 12.1 来执行该任务。

我有一个名为 的表,其中有一个名为numbers的相关列number_a,该表没有自动递增的主键。

我需要从中获取随机数,问题是这个表非常大,可能接近 1b 行。因此,即使我随机选择一行,也需要很长时间。

执行select number_1 from numbers order by random() limit 1真的很慢

我用谷歌搜索了一些网站,这些网站解释了您可以使用增量 ID 来查找随机键,但我在这个表中没有它,我无法修改它。

我用谷歌搜索了一些,发现了一些 postgresql 扩展,但我不想仅仅为了这种解决方案而安装 3rd 方扩展。

那么当我没有增量密钥时,无论如何知道如何正确选择 rand 吗?

我不能换桌子。

标签: postgresqlrandomsql-order-by

解决方案


来自评论:

不确定它是否“足够随机”,但你试过tablesample吗?– a_horse_with_no_name


推荐阅读