我在mySQL数据库中使用过索引,我知道索引是如何工作的。我使用索引从数据库中获得更好的性能。我知道,如果有太多的数据被索引,可能会有不利的一面。Memgrah的情况如何,因为它是一个图形数据库?数据是否可以被索引,哪些数据应该被索引?
发布于 2022-09-05 08:22:55
Memgraph不会自动索引标记的数据。如果要优化通过标签获取节点的查询,则需要创建索引。
当您运行查询时,您希望尽快获得结果。在最坏的情况下,当您执行查询时,需要检查所有节点以确定是否匹配。
通过启用索引,这个过程可以更快。执行查询时,引擎首先检查是否有索引。索引存储某些类型数据的附加信息,以便更有效地检索索引数据。索引基本上以一种不同的方式存储数据,即用一个键对其进行分区。例如,如果在标签上设置索引,查询MATCH (:Label)就不必显式地检查每个节点。您只需检查放置在“货架”上的节点。每个“货架”都有带有特定标签的节点。数据不被复制或复制到“书架”。实际上,您可以创建到这些节点的内存映射,并且不需要在其他地方查找它们。
索引有一些缺点,所以为创建索引仔细选择正确的数据是很重要的。索引编制的缺点是:
索引所有内容不会提高数据库速度。索引中的结构是在修改或插入新节点时动态更新的。创建新节点后,需要将其分配给索引组。这样的索引节点将更快地从数据库中检索。
此外,对某些数据类型进行索引不会带来任何显著的性能提高,例如,在最好的情况下,时间将减半。
索引可以应用于具有特定标签或标签和属性组合的数据。它们不是自动创建的,用户需要显式地创建它们。创建使用一个特殊的CREATE INDEX ON :Label(property)语言结构。
创建索引时,它将添加到索引的注册表中。
Memgraph支持两种类型的索引:
使用CREATE INDEX ON :Person;
https://stackoverflow.com/questions/73606494
复制相似问题