我正在尝试从大表中选择行(~10M行)
该表包含一列timestamp
,我在其上设置索引
我想按行顺序排列N行的行(按时间戳排序),这就是我使用limit
和offset
我从不同的进程运行并行查询
查询需要很长时间,我的服务器的磁盘使用率会爆炸(超过正常磁盘使用量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
有关如何优化此流程的任何想法? 非常感谢
答案 0 :(得分:0)