我有一个表,我想从中选择PostgreSQL中的N个随机行。从Postgresql表中选择随机从Where子句和没有PK
不过,我不想选择整个表,但我想从尊重一些约束的行中随机选择(例如,在范围内的价格,颜色=“红”等)
我有已经看到了一些当id以连续方式生成时执行此操作的方法。但是,在这种情况下,会有很多差距。
有没有办法做到这一点,而不使用随机()的顺序是昂贵的?
我有一个表,我想从中选择PostgreSQL中的N个随机行。从Postgresql表中选择随机从Where子句和没有PK
不过,我不想选择整个表,但我想从尊重一些约束的行中随机选择(例如,在范围内的价格,颜色=“红”等)
我有已经看到了一些当id以连续方式生成时执行此操作的方法。但是,在这种情况下,会有很多差距。
有没有办法做到这一点,而不使用随机()的顺序是昂贵的?
在PostgreSQL 9.5,你可以使用
TABLESAMPLE与方法伯努利和SYSTEM
海尔是一些很好的例子和解释,这是更好:
Compare different random methods
首先安装扩展:
创建扩展tsm_system_rows;
试试这个:
Select * from your_table tablesample system_rows(1000)
哇,谢谢!我会研究它,并试图了解它如何更好地工作明天。它可能会解决我的问题。 – silidragos
它工作的很好,但得到我分组随机元素,所以如果N是一个随机数我也得到N + 1,N + 2。我认为它与分页有关。但速度更快。 – silidragos
可以使用CTID而不是连续的关键,但它可能会随机取同时'为了()' –