Apache Ignite: слишком медленный запрос IN

Я пытаюсь запускать запросы на Apache Ignite после его заполнения из базы данных PostgreSQL. Проблема в том, что

У Suppoe у меня 2 кэша A и B, по 8700 и 10 000 записей соответственно. Когда я запускаю запросы, независимые запросы

SELECT id FROM "pcm".pcm WHERE code=1222;

SELECT id, name FROM "tn".tn WHERE id IN (6838);

Здесь 6838 возвращается первым запросом. Эти запросы занимают около 6 мс и 10 мс соответственно. Но когда я бегу

SELECT id, name FROM "tn".tn WHERE id IN (SELECT id FROM "pcm".pcm WHERE code=1222);

Это занимает около 9000 мс.

Может ли кто-нибудь помочь мне понять, почему этот запрос занимает так много времени? PS: На данный момент я не построил никаких индексов на ignite.


person randomuser    schedule 29.11.2017    source источник


Ответы (2)


Оператор IN не использует индексы. Вы должны заменить IN на соединения:

https://apacheignite-sql.readme.io/docs/performance-and-debugging#section-sql-performance-and-usability-considerations.

person Evgenii Zhuravlev    schedule 29.11.2017
comment
В настоящее время я выполняю все запросы без индекса. Даже если я заменил запрос IN на inner join, он по-прежнему занимает 3398 мс, что по-прежнему слишком много, чем время независимых запросов вместе взятых. - person randomuser; 04.12.2017

person    schedule
comment
6838 является результатом 1-го рассматриваемого запроса. Я не думаю, что ваш запрос такой же, как предполагалось. - person randomuser; 29.11.2017
comment
@ajaysingh Спасибо, исправлено - person Clodoaldo Neto; 29.11.2017