4

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

article:Article:Public
article:Article:Version

然后查询数据库

MATCH article:Article:Public

与像这样组织的数据库相比

article:ArticlePublic
article:ArticleVersion

然后将查询相关文档,而无需拦截两组

MATCH article:ArticlePublic

谈论性能?

4

2 回答 2

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
于 2013-09-25T12:50:58.003 回答
0

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

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

于 2013-08-26T13:43:40.520 回答