Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在现有节点上创建关系时出现Neo4j性能问题?_Neo4j - Fatal编程技术网

在现有节点上创建关系时出现Neo4j性能问题?

在现有节点上创建关系时出现Neo4j性能问题?,neo4j,Neo4j,产品索引: 关于:产品(SaleID) 关于:产品(CountryID) 关于:产品(ProductID) 关于:产品(ID) 没有更多的属性 订单索引: 关于:订单(SaleID) ON:订单(CountryID) ON:订单(ProductID) ON:订单(ID) 没有更多的属性 产品有50K个节点 Orders有500K个节点 当我在现有节点上创建上述场景的关系时。 社区版本3.1需要15分钟 查询: MATCH(prod:Products) WHERE prod.ID = 999

产品索引:

  • 关于:产品(SaleID)
  • 关于:产品(CountryID)
  • 关于:产品(ProductID)
  • 关于:产品(ID)
  • 没有更多的属性
  • 订单索引:

  • 关于:订单(SaleID)
  • ON:订单(CountryID)
  • ON:订单(ProductID)
  • ON:订单(ID)
  • 没有更多的属性
  • 产品有50K个节点

    Orders有500K个节点

    当我在现有节点上创建上述场景的关系时。 社区版本3.1需要15分钟

    查询:

    MATCH(prod:Products) 
    WHERE prod.ID = 999 
    WITH prod 
    MATCH (ord:Orders) 
    WHERE ord.ID = prod.ID and ord.SaleID=prod.SaleID and ord.CountryID  = prod.CountryID and ord.ProductID = prod.ProductID 
    CREATE (prod)-[prod_ord]->(ord)
    
    当前圆锥曲线:

    RAM-64g 堆最大值=最小值=32 页面交换=默认/自动

    DB命中->5亿次命中

    问题1。它没有考虑索引,我如何强制它考虑通过以下索引进行索引

    在prod:Product(SaleID)上使用索引

    在prod:Product(ProductID)上使用索引

    在产品上使用索引:产品(CountryID)

    在prod:Product(ID)上使用索引

    问题2。为什么要花这么多时间?需要进行任何配置吗?
    或者数据模型是错误的

    您的查询使用
    产品
    标签,但您的索引位于
    产品

    还提取产品id作为参数,并在第二次匹配中使用它。然后应使用
    Orders(ID)
    索引:

    MATCH (prod:Products) 
    WHERE prod.ID = {prodId} 
    WITH prod 
    MATCH (ord:Orders) 
    WHERE ord.ID = {prodId} and ord.SaleID=prod.SaleID and ord.CountryID  = prod.CountryID and ord.ProductID = prod.ProductID 
    CREATE (prod)-[prod_ord]->(ord)
    
    您可以通过以下方式在浏览器中设置参数:

    :param prodId : 999
    

    其他索引可能不是很有用,因为通常对一个属性进行查找,然后过滤结果比使用多个查找和进行某种连接要快。如果某些属性更独特,请使用它。

    1。该索引仅针对产品…此处存在打字错误。我现在已经改正了。2.关系是通过桌面客户端应用程序创建的。因此,prodID是动态分配的。每次从客户端触发时都会创建关系。你能帮我解决性能问题吗?我们能强制查询“使用索引”吗?@neoman1你可以尝试交换匹配子句,这可以减少需要过滤的行数。