Postgres优化大表

时间:2017-07-19 21:43:52

标签: query-optimization limit offset postgres-9.6 bigdata

我正在尝试从大表中选择行(~10M行)
该表包含一列timestamp,我在其上设置索引

我想按行顺序排列N行的行(按时间戳排序),这就是我使用limitoffset

的原因

我从不同的进程运行并行查询

查询需要很长时间,我的服务器的磁盘使用率会爆炸(超过正常磁盘使用量150G)

查询后,磁盘使用率恢复正常

这是我的查询的解释(这个没有order by

my_db=# explain select * from my_table order limit 1 offset 1;
                                   QUERY PLAN
---------------------------------------------------------------------------------
 Limit  (cost=0.14..0.28 rows=1 width=1001)
   ->  Seq Scan on my_table  (cost=0.00..1447042.46 rows=10162346 width=1001)

以下是真实查询的外观:

SELECT my_column
FROM my_table
WHERE id > x
ORDER BY timestamp ASC
limit y
OFFSET z

有关如何优化此流程的任何想法? 非常感谢

1 个答案:

答案 0 :(得分:0)