0

我目前正在为事件处理网络(EPN)构建一个模拟器。我有一个静态数据库作为数据源。我的主表包含汽车的地理位置(纬度/经度坐标)。

在可用的数百万行坐标中,我想我需要一次检索大约 1000 行,因为我不想“淹没”我的 EPN。我的(现实生活中)数据源的性质表现为随着汽车沿着路线行驶,地理位置会随着时间的推移而出现。所以我想获取最早的地理数据并按最旧最新的顺序通过静态数据集进行处理。这至少会给我“随时间排序”的顺序。

计划是把 1000 行放在 Rabbit 队列上,让消费者吃完这些,然后再去获取 1000 行,直到我到达表的末尾。最后,我将从第一行重新开始。

起初我在想可能有一个 SQL 语言结构,例如:“OPTIMIZE FOR n ROWS”或“FETCH FIRST n”——或两者的某种组合。

我发现这个说:

"您可以在 SELECT 语句的 OPTIMIZE FOR n ROWS 子句中指定较大的 n 值,以增加 DB2 服务器在每次网络传输中为不可滚动游标返回的 DRDA 查询块的数量。 "

但现在我认为要实现我想要的可能会更加复杂。

你们对创建这种行为有什么建议吗?

4

1 回答 1

1

最好的方法是使用ROW_NUMBEROLAP 函数,它会分配一个数字(在本例中按 排序GEO_DATE),然后您可以使用 WHERE 子句进行过滤:

SELECT * FROM (
    SELECT 
        ROW_NUMBER() OVER (ORDER BY GEO_DATE) AS rn
        A.*
        FROM your_table A
)
--WHERE rn BETWEEN 1 AND 1000
WHERE rn BETWEEN 1001 AND 2000
于 2013-08-26T21:22:33.167 回答