В Neo4j: быстрее ли выполнять запрос ко всем узлам (AllNodesScan) и затем фильтровать по их меткам с помощью предложения WHERE, или выполнять несколько запросов с NodeByLabelScan?
Для иллюстрации Я хочу, чтобы все узлы, помеченные одной из меток в label_list:
label_list = ['label_1', 'label_2', ...]
, которые были бы быстрее в приложении (это псевдокод) :
for label in label_list:
run.query("MATCH (n:{label}) return n")
или
run.query("MATCH (n) WHERE (n:label_1 or n:label_2 or ...)")
РЕДАКТИРОВАТЬ: На самом деле, я только что понял, что лучшим вариантом может быть запуск нескольких NodeByLabelScan в одном запрос, с чем-то похожим на это:
MATCH (a:label_1)
MATCH (b:label_2)
...
UNWIND [a, b ..] as foo
RETURN foo
Может ли кто-нибудь говорить с ним?