2013-08-20 58 views
3

請考慮以下示例:一個基於neo4j的wiki,包含大量文章和更多文章版本(所有編輯的歷史記錄)。如何存在很大差異。不使用多個標籤來識別每個節點neo4j cypher single vs multiple labels performance

article:Article:Public 
article:Article:Version 

和查詢然後用

MATCH article:Article:Public 

數據庫相比,像

article:ArticlePublic 
article:ArticleVersion 

那麼就會查詢舉辦的分貝有關文件無需截取兩組

MATCH article:ArticlePublic 

談到性能?

回答

3

因此,我最終填充了一個小數據庫,以測試標記的組的大小會如何影響彼此的性能。結果是,您可以自由地使用任意數量的標籤,而不會對性能產生任何重大影響,前提是您在此場景中將其從最小集合指定爲最大:

neo4j-sh (?)$ match n:Test return count(n); 
==> +----------+ 
==> | count(n) | 
==> +----------+ 
==> | 189222 | 
==> +----------+ 
==> 1 row 
==> 1571 ms 

neo4j-sh (?)$ match n:Test:One return count(n); 
==> +----------+ 
==> | count(n) | 
==> +----------+ 
==> | 170216 | 
==> +----------+ 
==> 1 row 
==> 1534 ms 

neo4j-sh (?)$ match n:Test:Two return count(n); 
==> +----------+ 
==> | count(n) | 
==> +----------+ 
==> | 19006 | 
==> +----------+ 
==> 1 row 
==> 526 ms 

neo4j-sh (?)$ match n:TestTwo return count(n); 
==> +----------+ 
==> | count(n) | 
==> +----------+ 
==> | 19082 | 
==> +----------+ 
==> 1 row 
==> 329 ms 

neo4j-sh (?)$ match n:Two:Test return count(n); 
==> +----------+ 
==> | count(n) | 
==> +----------+ 
==> | 19006 | 
==> +----------+ 
==> 1 row 
==> 306 ms 
0

我會說避免大量的索引查找會給你更好的閱讀性能(ArticlePublic),但是,由於你使用了很多索引,會佔用更多的空間。

怎麼樣索引:Article.Version在文章索引?