如何从Postgresql-db中以更高效的方式每天从中选择n个随机行?

时间:2018-11-15 16:19:12

标签: postgresql

我确实有带表的prostgresql数据库:

tweets
|- id - bigint
|- text - character
|- created - date

PostgreSQL 9.5.14

该数据库有约60 GB的推文。每天平均有500.000条推文。在最多的二十天内,最大推文数量为1.200.000条推文。最小值为80.000。我确实有大约600天的数据。我想选择在指定的时间间隔内,每天有50.000条随机推文。

我当前的查询:

SELECT * FROM (
    SELECT id, text, created, row_number() 
    OVER (PARTITION BY created ORDER BY random()) AS rownum 
    FROM tweets 
    WHERE created BETWEEN to_date('2016-07-12','YYYY-MM-DD') AND to_date('2016-09-12','YYYY-MM-DD')
    ) tmp
WHERE rownum <=50000;

问题:查询需要一些时间才能执行。我想更快;-)

问题:是否有更快的方法?

我的想法:我创建了一个列表,其中包含每天的ID范围。之后,我每天创建一个包含50.000个随机ID的列表,用于创建(长)查询。

0 个答案:

没有答案