Во многих случаях структура домена может быть использована для повышения производительности. Допустим, вы знаете, что в целом ваши A
сущности имеют меньше отношений x
по сравнению с числом y
связей на B
сущностях. Затем вы можете пройти два шага от узла A и посмотреть, где появляется узел B
, и таким образом отфильтровать узлы C
. Вот некоторый код для этого подхода:
Set<Node> found = new HashSet<Node>();
for ( Relationship firstRel : a1.getRelationships( Reltypes.x, Direction.OUTGOING ) )
{
Node cNode = firstRel.getEndNode();
for ( Relationship secondRel : cNode.getRelationships( Reltypes.y, Direction.INCOMING ) )
{
Node bNode = secondRel.getStartNode();
if ( bNode.equals( b1 ) )
{
found.add( cNode );
break;
}
}
}
Другим способом было бы запустить два потока, которые сканируют отношения с любой стороны.
Третий подход заключается в создании специализированного индекса, который помог бы отвечать на запросы такого типа, что, очевидно, снизило бы производительность вставки.