СОРТИРОВАТЬ ЗАПРОС слишком медленно в Neo4j Cypher
У меня есть простой набор данных со следующей структурой узла id: int, txt: string
и 400 000 узлов, и я создал индекс для свойства id. Когда я запускаю простой запрос
profile MATCH (n:LABEL) RETURN n.id LIMIT 25
Это использует индекс и работает быстро, но когда я запускаю этот запрос
profile MATCH (n:LABEL) RETURN n.id order by n.id desc limit 25
Этот запрос не использует индекс и возвращает результат около 1200 мс каждый раз.
Что мне не хватает и почему индексы не используются в этом запросе?
1 ответ
Это ахиллесова пята Neo4j, поскольку индексированные свойства ORDER BY по-прежнему не используют индексы.
У процедур APOC есть некоторая поддержка для получения упорядоченного диапазона с использованием индекса, хотя я сталкивался с некоторыми проблемами с этим ранее. В последнее время функциональность не перепроверена, поэтому стоит попробовать.