neo4j cypher单一vs多标签性能

时间:2013-08-20 13:14:12

标签: neo4j

考虑以下示例:基于neo4j的wiki,包含大量文章和更多文章版本(所有编辑的历史记录)。使用多个标签识别每个节点有多大差异

article:Article:Public
article:Article:Version

然后用

查询数据库
MATCH article:Article:Public

与像

组织的数据库相比
article:ArticlePublic
article:ArticleVersion

然后查询相关文件而不必截取两组

MATCH article:ArticlePublic

谈论表现?

2 个答案:

答案 0 :(得分:4)

所以我最终填充了一个小数据库来测试标记组的大小差异会如何影响彼此的性能。结果是,您可以自由地使用任意数量的标签而不会对性能产生任何重大影响,前提是在此方案中您可以将它们从最小集合指定为最大集合:

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

答案 1 :(得分:0)

我想说避免大量的索引查找会给你带来更好的读取性能(ArticlePublic)但是,因为你使用了很多索引所以会占用更多的空间。

索引怎么样:Article.Version在文章索引中?