Postgres选择下面的时间戳很慢

时间:2018-08-02 10:44:47

标签: postgresql performance timestamp

我想为表中的每个时间戳查找下一个时间戳。该查询在很小的数据集(20行)上运行良好,但是当我将其用于超过25000行的数据集时,它的运行速度非常慢。即使等待了几分钟,我仍然没有结果。有什么方法可以提高查询性能?

SELECT
  mytime,
  (SELECT
    MIN(mytime)
   FROM mydata sub
   WHERE sub.mytime > main.mytime)
   AS nexttime
FROM mydata AS main

2 个答案:

答案 0 :(得分:0)

您可以使用窗口函数从结果集中的下一条记录获取值。将此功能与按时间戳排序结合起来即可实现相同的功能。

select
    mytime,
    lead(mytime) over(order by mytime asc) as nexttime
from
    mydata

答案 1 :(得分:0)

select
    mytime,
    lead(mytime) over(order by mytime asc) as nexttime
from
    mydata
order by
    mytime asc