如何从 postgreSQL 表中检索随机数据行?

Posted

技术标签:

【中文标题】如何从 postgreSQL 表中检索随机数据行?【英文标题】:How to retrieve randomized data rows from a postgreSQL table? 【发布时间】:2011-07-25 06:40:50 【问题描述】:

我在 PostgreSQL 服务器数据库上有一个表,其中包含近 300 万 行,我需要将所有行保存到 CSV 文件中。这里的问题是,每次我运行该进程时,行必须以不同的随机顺序保存。

值得注意的是,它是一个 C# WinForms 应用程序。

我尝试将数据加载到 List 并使用洗牌算法,但它需要很长时间才能完成,我真的需要它快速。我认为直接在查询中执行此操作会快得多,但我不知道如何执行此操作。

【问题讨论】:

【参考方案1】:

通常,您可以ORDER BY 一个您的数据库风格的随机函数,例如

SELECT * FROM table ORDER BY RANDOM()

这可能和随机列表一样慢,具体取决于数据库服务器或产品。

【讨论】:

返回查询需要 16 秒,相当可接受并且比改组快得多。非常感谢。【参考方案2】:

看到这个问题Selecting random rows

看到这个精彩的链接Depesz MY THOUGHTS ON GETTING RANDOM ROW

【讨论】:

以上是关于如何从 postgreSQL 表中检索随机数据行?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 PostgreSQL 中的另一个表中更新具有随机 id 的表

如何在 PostgreSQL 中获得随机笛卡尔积?

如何从表中检索我的最后一个插入行?

如何从表中删除然后删除引用的已删除行? (postgresql)

如何从大表中读取所有行?

如何使用 Swift 从 CoreData sqlite 表中获取特定的行数据