我有一个关于在SQL中构造查询的一般性问题。
我有一个数据库,我需要为它提取过去n天的数据,这被证明是非常庞大的,无法放入内存中。
我有一个类似这样的查询
SELECT * FROM DB_A
WHERE data >=n days将查询放入内存的最好方法是使用循环,这样我就可以一次提取数据,比如m天(其中m << n)
那么我该怎么做呢?
我一点也不明白。
发布于 2020-05-30 15:17:46
如果您使用的是Oracle 12c或更高版本,则可以通过使用OFFSET和FETCH直接使用分页,如下所示:
SELECT * FROM DB_A
WHERE data >=n days
ORDER BY n
OFFSET m*x rows
fetch next m rows only;这里,x是从0开始的迭代次数。
假设你一次想要5行。
对于第一次迭代:
OFFSET 0 rows
fetch next 5 rows only;对于第二次迭代:
OFFSET 5 rows
fetch next 5 rows only;一直持续到最后……
https://stackoverflow.com/questions/62098783
复制相似问题