Thanks a lot for your input, i'll surely try what you suggested and add a
constraint to my schema :)

Thankd again for taking your time to answer

Il giorno gio 7 feb 2019, 22:04 Eve Freeman <eve.fre...@gmail.com> ha
scritto:

> Something like (these are totally untested, sorry for bugs)--also, this
> label AllCategories should probably be more what your entities actually are:
>
> create constraint on (allCategories:AllCategories) assert allCategories.id
> is unique;
>
> UNWIND $nodes AS n
> MERGE (node:AllCategories {id: n.id})
> SET node += n
> RETURN node
>
> If you want to retain category as a label, you could add it in a second
> part with something like:
> UNWIND $nodes AS n
> MERGE (node:AllCategories {id: n.id})
> SET node += n
> call apoc.create.addLabels([ id(node) ], [ n.category ]) yield node
> RETURN node
>
> On Thu, Feb 7, 2019 at 3:52 PM Andrea Balzoni <
> andrea.balz...@keypartner.it> wrote:
>
>> Ids are supposed to be globally unique, regardless of their label (again,
>> i'm not sure this is the best approach, but i thought it was the one that
>> made more sense), i'm not sure what kind of info i could provide so feel
>> free to ask...
>>
>> Il giorno gio 7 feb 2019, 21:24 Eve Freeman <eve.fre...@gmail.com> ha
>> scritto:
>>
>>> Whoops, "if so" should be "if not".
>>>
>>> On Thu, Feb 7, 2019 at 3:22 PM Eve Freeman <eve.fre...@gmail.com> wrote:
>>>
>>>> Are the ids unique to each label? If so, maybe you can merge on one
>>>> "inclusive" label and then add an additional category label, and  then you
>>>> can have just one constraint. No idea what you're doing here, so giving my
>>>> best guess.
>>>>
>>>> On Thu, Feb 7, 2019 at 2:40 PM Andrea Balzoni <
>>>> andrea.balz...@keypartner.it> wrote:
>>>>
>>>>> That sounds like a lot of constraints or am i wrong?
>>>>>
>>>>> Il giorno gio 7 feb 2019, 20:19 Eve Freeman <eve.fre...@gmail.com> ha
>>>>> scritto:
>>>>>
>>>>>> Yes. You would need to add a constraint for each label + id
>>>>>> combination.
>>>>>>
>>>>>> On Thu, Feb 7, 2019 at 1:57 PM Andrea Balzoni <
>>>>>> andrea.balz...@keypartner.it> wrote:
>>>>>>
>>>>>>> Sadly the ids i'm trying to add are not going to be necessarily
>>>>>>> unique, hence why i'm using merge. I think i grasped what a constrant 
>>>>>>> is,
>>>>>>> but i cant say the same about indexes. So you are telling me that 
>>>>>>> adding a
>>>>>>> constraint on ids would make the query faster? Sorry about questions 
>>>>>>> that
>>>>>>> might sound stupid, but i'm fairly new to neo4j...
>>>>>>>
>>>>>>> Il giorno gio 7 feb 2019, 18:59 Eve Freeman <eve.fre...@gmail.com>
>>>>>>> ha scritto:
>>>>>>>
>>>>>>>> One other note--if you know these are unique ids, you can avoid
>>>>>>>> using merge, and just use create, which will be quicker still.
>>>>>>>>
>>>>>>>> On Thu, Feb 7, 2019 at 12:54 PM Eve Freeman <eve.fre...@gmail.com>
>>>>>>>> wrote:
>>>>>>>>
>>>>>>>>> Well, what a merge will do is check whether something exists
>>>>>>>>> before it creates it, "match or create". The match step will get 
>>>>>>>>> linearly
>>>>>>>>> slower as it has to scan larger and larger lists of nodes on a label. 
>>>>>>>>> If
>>>>>>>>> you add an index (at minimum), or unique constraint/node key 
>>>>>>>>> (preferred,
>>>>>>>>> especially if you require uniqueness and will eventually have 
>>>>>>>>> concurrent
>>>>>>>>> requests of this nature), it will be able to do the match step much
>>>>>>>>> quicker.
>>>>>>>>>
>>>>>>>>> On Thu, Feb 7, 2019 at 12:50 PM Andrea Balzoni <
>>>>>>>>> andrea.balz...@keypartner.it> wrote:
>>>>>>>>>
>>>>>>>>>> Honestly i heard of those, but i'm not using any. I'm quite new
>>>>>>>>>> to it, so i wasnt sure what their purpose is.
>>>>>>>>>>
>>>>>>>>>> Il giorno gio 7 feb 2019, 18:43 Eve Freeman <eve.fre...@gmail.com>
>>>>>>>>>> ha scritto:
>>>>>>>>>>
>>>>>>>>>>> What's your schema? Do you have a unique constraint or index on
>>>>>>>>>>> the labels + id you're merging on?
>>>>>>>>>>>
>>>>>>>>>>> Eve
>>>>>>>>>>>
>>>>>>>>>>> On Thu, Feb 7, 2019 at 12:23 PM <andrea.balz...@keypartner.it>
>>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> Hello everyone, i'm trying to MERGE thousands of nodes using
>>>>>>>>>>>> UNWIND and apoc procedures (for a dynamic label creation) using 
>>>>>>>>>>>> Java Driver
>>>>>>>>>>>> as follows:
>>>>>>>>>>>>
>>>>>>>>>>>>         String query =
>>>>>>>>>>>>                 "UNWIND $nodes AS n " +
>>>>>>>>>>>>                 "CALL apoc.merge.node([n.category], {id: n.id},
>>>>>>>>>>>> n) YIELD node RETURN node";
>>>>>>>>>>>>         session.run( query, params );
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> My database contains something like 150k nodes divided by 16
>>>>>>>>>>>> labels and 130k relationships of the same type. It worked fine so 
>>>>>>>>>>>> far, it
>>>>>>>>>>>> never failed to deliver, but now that i'm trying to create 
>>>>>>>>>>>> something like
>>>>>>>>>>>> 4k new nodes and 5k new relationships at once it took more than 30 
>>>>>>>>>>>> minutes.
>>>>>>>>>>>> I feel like it should be way faster than this.
>>>>>>>>>>>>
>>>>>>>>>>>> Am i doing anything wrong? Is it really supposed to be this
>>>>>>>>>>>> slow? Is there anything i can do to make this process smoother and 
>>>>>>>>>>>> to
>>>>>>>>>>>> improve performances?
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks in advance
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>>> Google Groups "Neo4j" group.
>>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>>> it, send an email to neo4j+unsubscr...@googlegroups.com.
>>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>>> Google Groups "Neo4j" group.
>>>>>>>>>>> To unsubscribe from this group and stop receiving emails from
>>>>>>>>>>> it, send an email to neo4j+unsubscr...@googlegroups.com.
>>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>> Google Groups "Neo4j" group.
>>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>>> send an email to neo4j+unsubscr...@googlegroups.com.
>>>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>>>
>>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "Neo4j" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to neo4j+unsubscr...@googlegroups.com.
>>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "Neo4j" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to neo4j+unsubscr...@googlegroups.com.
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>> --
>>>>>> You received this message because you are subscribed to the Google
>>>>>> Groups "Neo4j" group.
>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>> send an email to neo4j+unsubscr...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>> --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "Neo4j" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to neo4j+unsubscr...@googlegroups.com.
>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Neo4j" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to neo4j+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Neo4j" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to neo4j+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Neo4j" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to neo4j+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to neo4j+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to