Я ищу эффективный способ перебора полных данных таблицы InfxDB с ~ 250 миллионами записей.
В настоящее время я разбиваю данные на страницы с помощью предложений OFFSET
и LIMIT
, однако для более высоких смещений это занимает много времени.
SELECT * FROM diff ORDER BY time LIMIT 1000000 OFFSET 0
занимает 21 секунду, тогда как
SELECT * FROM diff ORDER BY time LIMIT 1000000 OFFSET 40000000
занимает 221 секунду.
Я использую оболочку Python effxdb для отправки запросов.
Есть ли способ оптимизировать это или транслировать всю таблицу?
ОБНОВЛЕНИЕ: запоминание временной метки последних полученных данных и последующее использование WHERE time> = last_timestamp в следующем запросе значительно сокращает время запроса для более высоких смещений (время запроса всегда составляет ~ 25 секунд). Однако это довольно громоздко, потому что, если две точки данных совместно используют одну и ту же временную метку, некоторые результаты могут присутствовать на двух страницах данных, которые необходимо как-то обнаружить.