Я хотел бы понять, почему профилировщик запросов показывает только 2000003
дБ обращений. В конце концов, запрос требует полного сканирования на узлах.
Мой вопрос касается следующего запроса:
WITH ["Jennifer","Michelle","Tanya","Julie","Christie","Sophie","Amanda","Khloe","Sarah","Kaylee"] AS names
FOREACH (r IN range(0,1000000) | CREATE (:LabelA {username:names[r % size(names)]+r}))
WITH ["Jennifer","Michelle","Tanya","Julie","Christie","Sophie","Amanda","Khloe","Sarah","Kaylee"] AS names
FOREACH (r IN range(0,1000000) | CREATE (:LabelA:LabelB {username:names[r % size(names)]+r}))
WITH ["Jennifer","Michelle","Tanya","Julie","Christie","Sophie","Amanda","Khloe","Sarah","Kaylee"] AS names
FOREACH (r IN range(0,1000000) | CREATE (:LabelB {username:names[r % size(names)]+r}))
MATCH (n:LabelA:LabelB) RETURN COUNT(n)
Создает 3000003
узлов. Таким образом, чтобы посчитать количество узлов с определенными метками, мы должны выполнить полное сканирование, поэтому 3000003
дБ попаданий. Тем не менее, профили показывают, что на первом этапе требуется 2000003
дБ. Как это возможно?
Заимствовано из:
https://maxdemarzi.com/2017/10/25/counting-nodes-with-multiple-labels/