neo4j查詢優化

2021-09-17 02:49:47 字數 880 閱讀 4009

1、使用match時,避免使用多個標籤。搜尋使用了2個標籤,同樣的事情竟然訪問了資料庫801次。這是因為cypher執行了額外的 haslabel 過濾器。

可以通過使用專門的關係型別來解決這樣的問題,比如為他們新增published和drafted關係,然後用關係來找到指定使用者的published post。

2、隨機給node打標籤,多執行緒查詢

3、查詢策略

查詢1:

profile

match path=(x:node)-[*1..3]->(y:node)

return path

路徑:nodebylabelscan-->filter-->varlengthexpand(all)-->filter-->projection-->produceresults

查詢2:

profile

match path=(x)-[*1..3]-(y)

where id(x)=1 and id(y) = 14

return path

路徑:nodebyidseek-->varlengthexpand(all)-->filter-->projection-->produceresults

查詢id:

profile

match (n:node )

return id(n)

路徑:nodebylabelscan-->filter-->projection-->produceresults

4、資料預熱

match(n) 

optional match (n)-[r]-()

return count(n.value)+count(r)

Neo4j 空間查詢

1.neo4j自帶函式進行簡單計算 neo4j自帶distance point1,point2 函式,返回乙個浮點數,表示同一座標參照系中兩點之間的測地距離,可以使用round函式來進行四捨五入。目前neo4j3.3版本不支援return直接返回point型別,3.4版本可以。節點型別 節點格式 詳...

neo4j 查詢cypher話語

engine.execute start n node people return n params skip和limit的數字引數12 345mapparams new hashmap params.put s 1 params.put l 1 executionresult result eng...

Neo4j查詢語句總結

最近一直在做圖資料庫的相關工作,對neo4j的查詢語言cypher使用較多,故在此總結記錄。cypher作為圖資料庫的查詢語言,感覺和關係型資料庫的查詢語言sql差不多吧。1.如何找到乙個節點x,x以某種關係同時連線兩個不同節點a和b match a r relation x r relation ...