2016-04-04 11 views
0

Ich habe die graphaware Zeitleiste installieren, und ich versuche, eine Bereichsabfrage mit Chiffre auszuführen. Die Abfrage unten gibt mir nicht die beste Leistung. können Sie bitte beraten, ob dies der richtige Weg ist?graphaware Zeitzone Bereich Abfrage mit Cypher

MATCH ps=(n:Event)-[:VISIT_ON]-(m:Minute{value:0})--(h:Hour{value:0})--(d:Day{value:8})--(M:Month{value:2})--(y:Year{value:2016}) 
match pe=(n1:Event)-[:VISIT_ON]-(m1:Minute{value:59})--(h1:Hour{value:23})--(d1:Day{value:8})--(M1:Month{value:2})--(y1:Year{value:2016}) 
MATCH ph=shortestPath((m)-[:NEXT*]->(m1)) 
WITH nodes(ph) AS minutes 
UNWIND minutes as minute 
MATCH (minute)-[:VISIT_ON]->(e:Event) 
..... 
return ... 
+1

Es gibt ein REST-API für das, was Sie‘ Versuchen Sie es auch, wenn Sie die beste Leistung wollen. In Neo4j 3.0 können Sie eine gespeicherte Prozedur direkt von Cypher aufrufen, ohne die Abfrage selbst schreiben zu müssen. Gute Zeiten voraus. –

Antwort

0

nach Beziehungen Namen explizit hinzufügen und verschiedene am Ende läuft es besser .. ich es hier für die Zukunft bin zu halten ..:

MATCH ps=(n:Event)-[:VISIT_ON]->(m:Minute{value:0})<-[:CHILD]-(h:Hour{value:0})<-[:CHILD]-(d:Day{value:8})<-[:CHILD]-(M:Month{value:2})<-[:CHILD]-(y:Year{value:2016}) 
match pe=(n1:Event)-[:VISIT_ON]->(m1:Minute{value:59})<-[:CHILD]-(h1:Hour{value:23})<-[:CHILD]-(d1:Day{value:8})<-[:CHILD]-(M1:Month{value:2})<-[:CHILD]-(y1:Year{value:2016}) 
MATCH ph=shortestPath((m)-[:NEXT*]->(m1)) 
with distinct nodes(ph) as minutes 
return size(minutes)