простой поиск занимает несколько минут, несмотря на использование индекса - PullRequest
0 голосов
/ 04 ноября 2019

У меня есть график приличного размера (~ 600 миллионов узлов, 3,5 миллиарда ребер), который я импортировал в neo4j. График также довольно плотный (среднее число ребер около 10);хотя я не уверен, влияет ли это на производительность.

Для одного типа узла (:Authors) - существует примерно 200 миллионов узлов этого типа - я хотел бы выполнить запрос для конкретного имени, котороехранится в собственности normalizedName. Вот (очень простой) запрос:

MATCH (a:AUTHOR)
WHERE a.normalizedName = "jonathan smith"
RETURN a

Как и следовало ожидать, выполнение этого запроса занимает ДЛИННОЕ (несколько минут) время. Хотя у меня нет явной гарантии уникальности этого свойства, я все же попытался создать индекс для него, и я не получил жалоб от neo4j. Впоследствии, я ожидал, что вышеупомянутый запрос будет выполнен в мс, из-за сложности O (1) для поиска в индексе. К сожалению, запрос все еще занимает несколько минут.

Что я делаю не так?

1 Ответ

2 голосов
/ 04 ноября 2019

Убедитесь, что вы установили индекс как

CREATE INDEX ON :AUTHOR(normalizedName)

Имейте в виду, что вам нужно будет установить индекс для каждого свойства, для которого вы хотите использовать поиск индекса. Это также фильтруется по метке узла, т. Е. Если вы используете несколько меток на узле и нуждаетесь в поиске индекса, вам нужно будет установить одну для каждой метки, например, если у вас есть: Person: Author, вам также нужнонабор:

CREATE INDEX ON :Person(normalizedName)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...