如何从 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 的表