为了处理一个有 300 万行的表,我在 psql 中使用以下查询:
select id, trans_id, name
from omx.customer
where user_token is null
order by id, trans_id l
imit 1000 offset 200000000
获取数据需要 3 分钟以上。如何提高性能?
您遇到的问题是,要知道要获取数据库的 1000 条记录实际上必须获取所有 200000000 条记录来计数它们。
解决此问题的主要策略是使用 where 子句而不是偏移量。
如果您知道前面的 1000 行(因为这是某种迭代使用的查询(,则可以改为从该集合的最后一行获取 id 和trans_id,并获取其后的 1000 行。
如果 200000000 的数字不需要精确,并且您可以很好地猜测从哪里开始,那么这可能是解决问题的途径。