Warning on: The execution plan for this query contains the Eager operator. Comment le résoudre?

Bonjour,

J'ai ce warning:


avec la requête Cypher suivante:

MATCH ()-[r:LINK_TO]-() DELETE r;

CREATE CONSTRAINT ON (n:f4b1_com) ASSERT n.url IS UNIQUE;

USING PERIODIC COMMIT
LOAD CSV WITH HEADERS FROM "file:///f4b1_com_Links.csv" AS csvLine
MATCH (source:f4b1_com {url: csvLine.sourceUrl})
MERGE (target:f4b1_com {url: csvLine.targetUrl})
WITH source, target, csvLine
CALL apoc.create.relationship(source, "LINK_TO", NULL, target) YIELD rel
RETURN COUNT(rel);

DROP CONSTRAINT ON (n:f4b1_com) ASSERT n.url IS UNIQUE;

Le plan d’exécution étant le suivant:

Ma difficulté étant que je ne comprends pas le Warning sur Eager operator et de là comment résoudre ce Warning.

Merci de votre aidie

Bonjour,

Pouvez vous essayer la requete suivante?

MATCH (:f4b1_com)-[r:LINK_TO]-(:f4b1_com) DELETE r;

CALL apoc.periodic.iterate(
CALL apoc.load.csv( 
"file:///f4b1_com_Links.csv" ) yield map as row return row
','
MATCH (source:f4b1_com {url: row.sourceUrl})
MERGE (target:f4b1_com {url: row.targetUrl})
WITH source, target, csvLine
CALL apoc.create.relationship(source, "LINK_TO", NULL, target) YIELD rel
RETURN COUNT(rel);
‘, {batchSize:1000, iterateList:true, parallel:false});

Cordialement,
Jérémie

Bonjour Jérémie,

Merci de ton aide. Voici le résultat sous Neo4j Browser. Plus de Warning!

J'ai corrigée un petite erreur (manquait un ')

MATCH (:f4b1_com)-[r:LINK_TO]-(:f4b1_com) DELETE r;

CALL apoc.periodic.iterate(
'CALL apoc.load.csv("file:///f4b1_com_Links.csv") YIELD map AS row RETURN row
','
MATCH (source:f4b1_com {url: row.sourceUrl})
MERGE (target:f4b1_com {url: row.targetUrl})
WITH source, target, csvLine
CALL apoc.create.relationship(source, "LINK_TO", NULL, target) YIELD rel RETURN COUNT(rel);
', {batchSize:1000, iterateList:true, parallel:false});

De ce que je comprends de cette requête : Traitement batch de la requête Cypher avec un commit tous les 1000 enregistrements. Est ce bien cela ?

C'est exactement cela.
Vous pouvez aussi augmenter la taille des batchs, configurer le nombre de retries.

Je recommande vivement d'utiliser la derniere maintenance release et la derniere version d'apoc.

1 Like