Why does neo4j warn: “This query builds a cartesian product between disconnected patterns”?

前端 未结 2 1097
挽巷
挽巷 2020-11-27 06:21

I\'m defining the relationship between two entities, Gene and Chromosome, in what I think is the simple and normal way, after importing the data from CSV:

MA         


        
2条回答
  •  没有蜡笔的小新
    2020-11-27 07:07

    As logisima mentions in the comments, this is just a warning. Matching a cartesian product is slow. In your case it should be OK since you want to connect previously unconnected Gene and Chromosome nodes and you know the size of the cartesian product. There are not too many chromosomes and a smallish number of genes. If you would MATCH e.g. genes on proteins the query might blow.

    I think the warning is intended for other problematic queries:

    • if you MATCH a cartesian product but you don't know if there is a relationship you could use OPTIONAL MATCH
    • if you want to MATCH both a Gene and a Chromosome without any relationships, you should split up the query

    In case your query takes too long or does not finish, here is another question giving some hints how to optimize cartesian products: How to optimize Neo4j Cypher queries with multiple node matches (Cartesian Product)

提交回复
热议问题