neo4j cypher单标签与多标签性能对比
考虑以下示例:一个基于neo4j的wiki,包含大量文章和更多的文章版本(所有编辑的历史记录)。使用多个标签标识每个节点有多大区别neo4j cypher单标签与多标签性能对比,neo4j,Neo4j,考虑以下示例:一个基于neo4j的wiki,包含大量文章和更多的文章版本(所有编辑的历史记录)。使用多个标签标识每个节点有多大区别 article:Article:Public article:Article:Version 然后使用 MATCH article:Article:Public 与像这样组织的数据库相比 article:ArticlePublic article:ArticleVersion 然后,它将查询相关文档,而不必截取这两个组 MATCH article:Articl
article:Article:Public
article:Article:Version
然后使用
MATCH article:Article:Public
与像这样组织的数据库相比
article:ArticlePublic
article:ArticleVersion
然后,它将查询相关文档,而不必截取这两个组
MATCH article:ArticlePublic
说到性能?我想说,避免大量索引查找将提高阅读性能(ArticlePublic),但由于使用了大量索引,将占用更多空间
关于索引:Article.Version在文章索引中如何?因此我最后填充了一个小数据库,以测试标记组的大小差异如何影响彼此的性能。结果是,您可以自由使用任意数量的标签,而不会对性能产生任何重大影响,前提是在此场景中,您可以从最小的标签集到最大的标签集进行指定:
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