首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否应该对所有数据进行索引,以及如何在memGraph中启用它?

是否应该对所有数据进行索引,以及如何在memGraph中启用它?
EN

Stack Overflow用户
提问于 2022-09-05 08:22:55
回答 1查看 41关注 0票数 0

我在mySQL数据库中使用过索引,我知道索引是如何工作的。我使用索引从数据库中获得更好的性能。我知道,如果有太多的数据被索引,可能会有不利的一面。Memgrah的情况如何,因为它是一个图形数据库?数据是否可以被索引,哪些数据应该被索引?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-05 08:22:55

Memgraph不会自动索引标记的数据。如果要优化通过标签获取节点的查询,则需要创建索引。

当您运行查询时,您希望尽快获得结果。在最坏的情况下,当您执行查询时,需要检查所有节点以确定是否匹配。

通过启用索引,这个过程可以更快。执行查询时,引擎首先检查是否有索引。索引存储某些类型数据的附加信息,以便更有效地检索索引数据。索引基本上以一种不同的方式存储数据,即用一个键对其进行分区。例如,如果在标签上设置索引,查询MATCH (:Label)就不必显式地检查每个节点。您只需检查放置在“货架”上的节点。每个“货架”都有带有特定标签的节点。数据不被复制或复制到“书架”。实际上,您可以创建到这些节点的内存映射,并且不需要在其他地方查找它们。

索引有一些缺点,所以为创建索引仔细选择正确的数据是很重要的。索引编制的缺点是:

  • 对每个索引都需要额外的存储(内存),而
  • 则减缓了对数据库的写操作。

索引所有内容不会提高数据库速度。索引中的结构是在修改或插入新节点时动态更新的。创建新节点后,需要将其分配给索引组。这样的索引节点将更快地从数据库中检索。

此外,对某些数据类型进行索引不会带来任何显著的性能提高,例如,在最好的情况下,时间将减半。

索引可以应用于具有特定标签或标签和属性组合的数据。它们不是自动创建的,用户需要显式地创建它们。创建使用一个特殊的CREATE INDEX ON :Label(property)语言结构。

创建索引时,它将添加到索引的注册表中。

Memgraph支持两种类型的索引:

使用CREATE INDEX ON :Person;

  • label-property查询创建
  • 标签索引,例如用索引创建索引,例如使用查询创建
    • 标签索引
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73606494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档