我想为表中的每个时间戳查找下一个时间戳。该查询在很小的数据集(20行)上运行良好,但是当我将其用于超过25000行的数据集时,它的运行速度非常慢。即使等待了几分钟,我仍然没有结果。有什么方法可以提高查询性能?
SELECT
mytime,
(SELECT
MIN(mytime)
FROM mydata sub
WHERE sub.mytime > main.mytime)
AS nexttime
FROM mydata AS main
答案 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