2013-11-18 3 views
0

У меня есть 10M узлов в базе данных. Я использую CYPHER для обновления узлов. При выполнении возврата узла она занимает около 1 секунды, чтобы вернуться 10 (с использованием LIMIT)Почему обновление свойств узла Neo4j занимает очень много времени?

START e = node:events('shop:12345 AND attributes_vin:[* TO *]') 
WHERE HAS(e.attributes_vin) 
//SET e.attributes_vin = LOWER(e.attributes_vin) 
RETURN e 
LIMIT 10 

При добавлении SET e.attributes_vin = LOWER(e.attributes_vin) для одних и тех же узлов 10 она занимает 2 минуты.

Что я делаю неправильно? Благодарю.

ответ

2

Я думаю, что ограничение, которое вы установили, ограничивает только то, что возвращается, а не то, на какие узлы вы устанавливаете свойство (свойство задано на всех совпадающих узлах, и десять из них возвращаются).

Можете ли вы попробовать разорвать свой запрос ранее с помощью WITH и установить предел там?

START e = node:events('shop:12345 AND attributes_vin:[* TO *]') 
WHERE HAS(e.attributes_vin) 
WITH e LIMIT 10 
SET e.attributes_vin = LOWER(e.attributes_vin) 
RETURN e 
+0

+1 'SET' заставляет запрос быть нетерпеливым, поэтому запрос jjaderberg должен работать. –

Смежные вопросы