Я работаю над CYPHER для разных запросов, а мой запрос Match
занимает слишком много времени.Вопрос о совпадении занимает слишком много времени в CYPHER
Запрос:
MATCH (a:FacebookComment), (b:FacebookLike)
WHERE a.post_id > 696
AND
a.post_id < 746
AND
a.id = toint(b.comment_id)
CREATE (a) <-[fpl:FB_COMMENT_LIKE]-(b)
Есть 20117 узлы в FacebookLike и 6054 узлов в FacebookComment.
Для выполнения требуется 8 минут.
Что может быть проблемой в запросе или в любой другой точке?
EDIT
Я бегу PROFILE в шифровальщика запросе
PROFILE
Match (a:FacebookComment) WHERE a.post_id > 696 AND a.post_id < 746 with a
Match (b:FacebookLike) WHERE a.id = toint(b.comment_id) with b, a
MERGE (a)<-[fpl:FB_COMMENT_LIKE]-(b)
Потребовалось 808676 мс.
Результат:
И Cypher запрос:
PROFILE
Match (a:FacebookComment), (b:FacebookLike) WHERE a.id = toint(b.comment_id) AND a.post_id > 696 AND a.post_id < 746
MERGE (a)<-[fpl:FB_COMMENT_LIKE]-(b)
Потребовалось 800793 мс.
РЕЗУЛЬТАТ:
Вы построения '' Ā' на b' декартово произведение. Вам нужны отношения между ними, а не использование предложения WHERE для соответствия идентификатору. –
На самом деле, я делаю отношения между FacebookLike и FacebookComment на основе предложения WHERE. –
Хорошо. У вас есть указатель на их идентификатор? –