2016-11-17 3 views
1

Я использую SqlFieldsQuery для кеша с ~ 1_000_000 строк.Apache Ignite SqlFieldsQuery проблема с курсором

QueryCursor<List<?>> cursor = cache.query(new SqlFieldsQuery("select num from some_cache")) 

Я прочитал о курсоров запросов ленивой природы (http://apacheignite.gridgain.org/docs/cache-queries#section-querycursor). Но кажется, что все данные из кеша загружаются сразу. Поскольку мой запрос занимает много времени, а cursor.getAll() немедленно возвращает коллекцию со всеми данными.

Неужели это отсутствие какой-либо конфигурации или ожидаемого поведения?

ответ

0

getAll действительно возвращает все строки сразу.

QueryCursor extends Iterable, используйте итератор, чтобы использовать лень.

QueryCursor<List> cursor = cache.query(new SqlFieldsQuery("select num from some_cache")) 
for (List l : cursor) 
    doSomething(l); 
+0

Я использовал 'getAll' только для проверки того, что данные уже загружены. Я хочу сказать, что кажется, что все данные уже были загружены во время 'cache.query' (без вызова' getAll') –

+0

Ну, похоже, что запрос занимает больше времени, чем поиск результатов. Это не означает, что ленивая загрузка не работает. –