У меня есть наивный вопрос относительно использования ключевого слова DISTINCT
. Поэтому в основном у меня есть график (User- [Likes] -> Item) с миллионами узлов. Я хочу найти отдельных пользователей, которые любят определенный элемент. Следующие два запроса имеют значительную разницу в производительности, и я смущен. Я создаю индекс: Item (id) и: User (id).Производительность запроса Neo4j с ключевыми словами
Запрос 1:
profile match (a:Item {id:'001'})<-[:LIKES]-(u:User)
return count(distinct u);
Запрос 2:
profile match (a:Item {id:'001'})<-[:LIKES]-(u:User)
return distinct u;
Первый запрос возвращает результат в секундах, а второй запрос продолжает работать в течение более 5 минут, и я потерял пациент и остановить запрос , Я думал, что второй запрос будет быстрее, чем первый запрос, поскольку нет операции агрегации подсчета, поэтому я не понимаю разницу в производительности.
Не первый запрос, возвращающий одно число, в то время как второй запрос возвращает, возможно, тысячи (или * миллионов? *) Узлов? –
Вы должны запустить второй запрос от драйвера или добавить LIMIT 100 или около того в конце. –