【发布时间】:2021-02-07 12:31:34
【问题描述】:
我正在使用 postgresql 12.1 来执行该任务。
我有一个名为 numbers 的表和一个名为 number_a 的相关列,该表没有自动递增的主键。
我需要从中获取随机数,问题是这个表非常大,可能接近 1b 行。所以即使我随机选择一行也需要很长时间。
执行select number_1 from numbers order by random() limit 1真的很慢
我在 Google 上搜索并找到了一些网站,这些网站解释说您可以使用增量 ID 来查找随机键,但我在此表中没有它,我无法修改它。
我在 google 上搜索了一些,发现了一些 postgresql 扩展,但我不想仅仅为了这种解决方案而安装 3rd 方扩展。
那么当我没有增量键时,无论如何知道如何通过 rand 正确选择?
我不能换桌子。
【问题讨论】:
-
不确定它是否“足够随机”,但您尝试过
tablesample吗? -
@a_horse_with_no_name - YAAAYAYAYAYY!将其发布为答案:) 使用与 postgresql 捆绑在一起的 tsm_system_rows。很快!谢谢
标签: postgresql random sql-order-by