Итак, я работаю с набором данных управления программами, в котором не так много записей (в младших тысячах), но все еще много зависает, когда я пытаюсь визуализировать несколько типов отношений.У меня есть индексы, такие как ID проекта, но я думаю, что медлительность связана с тем, что мне приходится создавать временный набор узлов проекта (CREATE), чтобы сопоставить разные организации с постоянными узлами проекта (на основе MERGE).на ProjectID).Предполагая, что у меня уже есть загруженные узлы организации, код выглядит следующим образом:
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///Project.csv" AS p
CREATE (:ProjectTemp {
Project_ID: toString(p.ProjectId),
Project_Name: toString(p.ProjectTitle),
Org_ID: toString(p.`Org ID`) })
USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///Project.csv" AS row
MERGE (p:Project {Project_ID: toString(row.ProjectId),
Project_Name: toString(row.ProjectTitle) })
MATCH (o:Organization), (pt:ProjectTemp),(p:Project)
WHERE o.Org_ID=pt.Org_ID AND pt.Org_Role='Lead Recipient' AND
pt.Project_ID=p.Project_ID
MERGE (o)-[:LEAD]->(p)
Есть ли способ не использовать узлы Project Temp для сопоставления и предотвращения проблемы декартовых продуктов?Или есть способ сделать это быстрее / эффективнее?Мне нужно поддерживать несколько отношений (например, Sub, Vendor), а не только Lead.Также причина, по которой мне нужны временные узлы, потому что есть свойства, которые имеют некоторые записи с одним и тем же идентификатором проекта, но не другие, которые определяют, как организация связана с проектом.По сути, я хочу объединить ProjectID, чтобы все отношения указывали на один и тот же проект, при этом сохраняя свойства на уровне отдельных записей для правильного соответствия организациям, но пока я думал только об этом, используя временные узлы.
Спасибо!