我有两个应用程序:第一个在MyTable表中插入数据。第二个以块的形式读取MyTable表的行:假设每次读取 1000 行。第二个应用程序必须按时间顺序读取数据,并使用类似于以下内容的查询:
SELECT
C1,
C2
FROM
(
SELECT
rownum AS RowNumber,
C1,
C2
FROM
MyTable
WHERE
C3 = :C3
AND IsProcessed = 0
ORDER BY
Timestamp
) temp
WHERE
temp.RowNumber <= 1000
该查询有效,但当MyTable表中有大量未处理的行(例如 1000 万行)等待时,查询速度很慢(超过一分钟,通常只需要几秒钟即可执行)。我想这是正常的,因为 Oracle 必须首先按时间顺序对所有相关行进行排序......所以我的问题是:有没有更好的方法来编写这个查询?