我为什么在运行graph.run(SHOW INDEXES;)时看到一个为空的Lookup索引?

0 投票
2 回答
23 浏览
提问于 2025-04-12 12:47

我最近开始使用neo4j这个数据库。我用py2neo这个库连接到了数据库,并使用faker库填充了数据,创建了“人”和“地址”这两个节点,每个节点都有一些属性。我想创建索引,并测试不同索引的性能。我创建了这两个索引:

`# Step 3: Create Indexes for Persons and Addresses
graph.run(" CREATE INDEX IF NOT EXISTS FOR (p:Person) ON (p.name, p.dob, p.email, p.gender)")
graph.run("CREATE INDEX IF NOT EXISTS FOR (a:Address) ON (a.address, a.postcode, a.country)")'

我创建了一些索引,并使用了这个命令:

`graph.run("SHOW INDEXES;")`

输出结果

我本来期待看到2个索引,但结果却返回了3个索引。最后一个是查找类型的,并且有一些属性是空的。那张图片显示了输出结果,为什么这个索引会出现呢?谢谢。

我原本只期待返回2个索引,所以我在想可能是我理解上有些问题?我已经开始阅读Neo4j关于索引的文档,但还是不太确定。任何帮助都很感激。谢谢!

2 个回答

0

你看到的这个额外的索引可能是Neo4j自动创建的,用于内部使用。Neo4j可能会创建一些额外的索引来优化它的内部操作,而这些索引可能并不是用户直接创建的。在你的情况下,显示为null属性的“Lookup”索引可能就是其中一个内部索引。

要确认这个索引是否真的是Neo4j创建的内部索引,你可以尝试直接查询系统目录。比如,你可以使用下面的查询来列出数据库中的所有索引:

CALL db.indexes() YIELD description
RETURN description
0

根据我的经验,neo4j 默认会创建两个“查找索引”。(我不太确定你为什么只看到一个,可能是默认的索引只有在需要的时候才会创建。)

根据 neo4j 的 操作手册

令牌查找索引是数据库中默认存在的唯一索引。

而且文档还 说明 实际上有两个这样的查找索引:一个是用于节点标签的,另一个是用于关系类型的。

撰写回答