postgresql - 在没有 ID 的情况下通过 rand() 更快地订购
问题描述
我正在使用 postgresql 12.1 来执行该任务。
我有一个名为 的表,其中有一个名为numbers
的相关列number_a
,该表没有自动递增的主键。
我需要从中获取随机数,问题是这个表非常大,可能接近 1b 行。因此,即使我随机选择一行,也需要很长时间。
执行select number_1 from numbers order by random() limit 1
真的很慢
我用谷歌搜索了一些网站,这些网站解释了您可以使用增量 ID 来查找随机键,但我在这个表中没有它,我无法修改它。
我用谷歌搜索了一些,发现了一些 postgresql 扩展,但我不想仅仅为了这种解决方案而安装 3rd 方扩展。
那么当我没有增量密钥时,无论如何知道如何正确选择 rand 吗?
我不能换桌子。
解决方案
来自评论:
不确定它是否“足够随机”,但你试过
tablesample
吗?– a_horse_with_no_name
推荐阅读
- python-3.x - 具有嵌套循环和用户输入的乘法表,在偶数后包括 # 符号
- ruby-on-rails - Rails 5:将外部 API 调用保存到数据库
- xamarin.forms - Xamarin.UITest iOS ENABLE_TEST_CLOUD 指令令人困惑
- c# - 在 Xamarin/Visual Studio 中构建的本机 iOS 应用程序打开然后立即关闭
- java - 用于多个配置文件的 Micronaut PropertySource
- flutter - 如何在点击检测中跳过 Flutter Widget?
- c++ - Mac 和 Linux 中 C++ 的 const auto& 中的不同行为
- python - 远程登录 APC PDU CLI 自动化
- reactjs - 无法迭代并将嵌套在“帖子”中的“评论”传递给组件
- reactjs - 反应钩子:redux成功操作后无法重定向