CREATE INDEX создает индекс для узлов , поэтому такой индекс не повлияет на производительность вашего запроса.
Поскольку ваш шаблон MATCH
, ()-[e:DummyEdge {edge_id:"123"}]->()
, при отсутствии информации о конечных узлах, neo4j должен просмотреть все отношения в БД, чтобы найти те, которые вы хотите. Вот почему ваш запрос такой медленный.
Было бы намного эффективнее, если бы (как сказал @ MichaelHunger) ваш запрос содержал полезную информацию (например, метку или индексированную пару метка / свойство) для любого из узлы в вашем MATCH
шаблоне. Это поможет neo4j сузить число взаимосвязей, которые необходимо отсканировать. В качестве примера, давайте заявим, что начальный узел должен иметь метку Foo
:
MATCH (:Foo)-[e:DummyEdge {edge_id:"123"}]->()
SET e.property="value"
С помощью вышеупомянутого запроса neo4j должен будет только посмотреть на исходящие отношения узлов Foo
, что намного быстрее, поскольку neo4j может быстро находить узлы с заданной меткой (или индексом).
Теперь neo4j также поддерживает индексы полнотекстовой схемы , которые поддерживают индексы отношений. Однако эти виды индексов требуют гораздо больше усилий с вашей стороны и могут оказаться излишними для вашего варианта использования.