After adding the constraint / index, did you also change your query to include the :Page label?
CREATE CONSTRAINT ON (p:Page) ASSERT p.node IS UNIQUE; query = neo4j.CypherQuery( graph_db, """MATCH (m:Page {node:'%s'}), (n:Page {node:'%s'}), p = shortestPath((m)-[*..20]->(n)) RETURN p""" % (node1, node2) ) Also I recommend not to use string substitution but cypher parameters MATCH (m:Page {node:{node1}}), (n:Page {node:{node2}}) and then pass a dictionary with {'node1':node1, 'node2':node2} On Sun, Nov 23, 2014 at 6:37 PM, Erika Arnold <era...@gmail.com> wrote: > >> Thank you for your suggestions. The database is about 5.5G on disk. > > I turned off auto indexing and applied the constraint on node id, but saw > no discernible difference in response time. Perhaps the culprit is the > pathfinding algorithm? > > When I ask for the shortest path between two nodes that I know are > directly connected, why does the query take the same amount of time as for > a path with 5 connections? Shouldn't it stop as soon as it finds node2 in > the list of linked pages for node1? > > Additionally, even after placing the database on a memory-optimized EC2 > server with 15G RAM, the query still takes 30 seconds. It doesn't appear to > be at max memory or CPU usage. > > I'm baffled at what to optimize next. > > -- > You received this message because you are subscribed to the Google Groups > "Neo4j" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to neo4j+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Neo4j" group. To unsubscribe from this group and stop receiving emails from it, send an email to neo4j+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.