2013-04-11 120 views
0

低速我使用查詢上暗號查詢

"START a=node("+str(node1)+"), 
     b =node("+str(node2)+") 
MATCH p=shortestPath(a-[:cooperate*..200]-b) 
RETURN length(p)" 

看到A和B之間的路徑。我有很多節點,所以當我運行查詢時,有時它運行得很快,有時運行緩慢。我使用neo4j 1.9社區。任何人都可以幫忙

回答

1

查詢時間與搜索圖表的數量成正比。您的查詢允許進行非常深入的搜索,深度達到200.如果a。和b。非常接近,您不會搜索圖表的大部分內容,並且查詢將返回非常快。如果一個。和b。被200條邊分隔開來,你會搜索一個非常大的圖(可能是整個圖?),這對於大圖來說會慢很多。

+0

感謝您的回答!其實我應該使用*而不是200,因爲我無法定義搜索深度。我想也許這是jvm內存 – user2234995 2013-04-12 01:40:58

0

圖表是否在兩個查詢之間發生變化,這兩個節點是否有可能在查詢之間彼此相關的不同位置結束?例如,如果您生成一些隨機數據來填充圖表?

+0

謝謝!該圖不會改變,我的目標是計算許多節點之間的最短路徑以獲得平均路徑長度。但它有時速度很快,有時速度很慢。我想也許這是與jvm內存相關的東西... – user2234995 2013-04-12 01:43:53

+0

你能描述一下你運行數據庫的硬件嗎?它是專用機器,VPS,您的個人筆記本電腦?還有哪些其他服務和流程正在運行? – holaSenor 2013-04-12 13:08:54