neo4j - Cypher:创建已存在的架构索引

标签 neo4j cypher

当您要求 Neo4j 创建一个已经存在的索引时,它不会抛出异常,这似乎很适合我的目的。

session.run("CREATE INDEX ON :User(email)");

问题 1:

但是 neo4j 是如何在幕后处理这个问题的呢?它是删除索引然后重新创建它,还是因为索引已经存在而完全忽略查询?

我想知道,因为我有一些 CRUD 操作,并且我想在创建节点时定义节点的架构,这意味着调用“CREATE INDEX”等等。缺点是这意味着对于创建的每个新节点都会进行创建索引的冗余调用,如果索引已经存在则忽略它们就可以了。

问题2:

我注意到即使尚不存在带有标签 User 的节点,以下工作也会起作用(这意味着我可以在关联节点之前创建标签和索引)。

CREATE INDEX ON :User(email)

我是 Neo4j 的新手,并且习惯了 RDBMS 世界,在该世界中,您无法在不存在的列上创建索引。我是否正确地相信,在创建具有这些标签和属性的节点之前创建索引和标签不会导致任何不可预见的问题?

最佳答案

回答问题#2,即使不存在具有这些标签或属性的节点,也可以创建索引和约束,这完全没问题,而且实际上是一种极其常见的情况。我强烈推荐走这条路。

我建议不要在每次创建节点时都创建索引。虽然我不认为它会造成太多的循环浪费,但它看起来并不是一个好的设计。

关于neo4j - Cypher:创建已存在的架构索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38841818/

相关文章:

Neo4j:节点属性等于值 A 和值 B(交集)的求和关系属性

neo4j - 如何在neo4j中使用MATCH过滤时获得节点的度数

pagination - 如何获得带有跳过限制的密码的总行数?

java - 当我添加丰富的节点关系时,如何修复 "Relationship entity cannot have a missing start or end node"?

neo4j - 匹配与集合中所有节点有直接链接的节点

neo4j - 使用 resultDataContents=graph 通过 REST API 返回集合时,为什么排序顺序会丢失

neo4j - 使用 Cypher 在 Neo4j 中的数十万个节点之间创建三元闭包不起作用

python - 使用 python 驱动程序在 Neo4j 中创建多个节点的最佳方法

Neo4j - 图数据科学库 - 如何对图目录中的命名图进行密码查询?

neo4j - 密码 2.0 : using label based index to search a set of nodes