我确实有带表的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的列表,用于创建(长)查询。