Inserción de nodos más restrictivos en el lado izquierdo en expresiones de ruta de longitud variable (VLP)
En las consultas de ruta de longitud variable (VLP), el motor de consultas optimiza la evaluación al elegir iniciar el recorrido por el lado izquierdo o derecho de la expresión. La decisión se basa en la cardinalidad de los patrones de los lados izquierdo y derecho. La cardinalidad es el número de nodos que coinciden con el patrón especificado.
-
Si el patrón derecho tiene una cardinalidad igual a uno, entonces el lado derecho será el punto de partida.
-
Si el lado izquierdo y el derecho tienen una cardinalidad igual a uno, la expansión se comprueba en ambos lados y comienza en el lado con la expansión más pequeña. La expansión es el número de bordes salientes o entrantes del nodo del lado izquierdo y del nodo del lado derecho de la expresión de VLP. Esta parte de la optimización solo se usa si la relación de VLP es unidireccional y se proporciona el tipo de relación.
-
De lo contrario, el lado izquierdo será el punto de partida.
Para una cadena de expresiones de VLP, esta optimización solo se puede aplicar a la primera expresión. Las demás VLP se evalúan empezando por el lado izquierdo. Por ejemplo, supongamos que la cardinalidad de (a), (b) es igual a uno y que la cardinalidad de (c) es mayor que uno.
-
(a)-[*1..]->(c): la evaluación comienza con (a). -
(c)-[*1..]->(a): la evaluación comienza con (a). -
(a)-[*1..]-(c): la evaluación comienza con (a). -
(c)-[*1..]-(a): la evaluación comienza con (a).
Ahora supongamos que los bordes entrantes de (a) son dos y bordes salientes de (a) son tres, mientras que los bordes entrantes de (b) son cuatro y los bordes salientes de (b) son cinco.
-
(a)-[*1..]->(b): la evaluación comienza con (a), ya que los bordes salientes de (a) son inferiores a los bordes entrantes de (b). -
(a)<-[*1..]-(b): la evaluación comienza con (a) ya que los bordes entrantes de (a) son inferiores a los bordes salientes de (b).
Como regla general, coloque el patrón más restrictivo en el lado izquierdo de una expresión de VLP.