【问题标题】:Different in index vs constraint syntax索引与约束语法不同
【发布时间】:2021-12-31 05:52:39
【问题描述】:

在创建索引或约束时,我对术语有点不清楚。例如:

  • CREATE CONSTRAINT cs ON (p:Person) ASSERT p.name IS UNIQUE
  • CREATE INDEX my_index FOR (p:Person) ON (p.age)

什么时候使用FOR,什么时候使用ON?或者它们是两个不同的版本,还是一个已弃用?我还看到 ASSERTREQUIRE 使用过,也不确定何时使用哪个。

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

    CREATE CONTRAINT [constraint_name] ON ... ASSERT ... 的语法似乎过时了。在当前的documentation (v4.4) 中没有特别提到它。但是,它在同一页面上被引用为不推荐使用 DROP CONSTRAINT 命令。

    当前语法始终为CREATE CONTRAINT [constraint_name] FOR ... REQUIRE ...

    【讨论】:

      【解决方案2】:

      如果您使用 CREATE INDEX,它不会强制执行唯一性。所以基本上是为了加快搜索速度。 CREATE CONSTRAINT 确实强制执行唯一性。

      当您执行:schema 时,您会看到在这两种情况下都会创建一个索引,因为也为了强制唯一性,快速查找有很大帮助:)

      【讨论】:

      • 哦,我不是指 CONSTRAINTINDEX 之间的区别,我的意思是为什么在语法中使用 FORONASSERT 与 @ 987654327@。使用它们时有什么区别?
      猜你喜欢
      • 2014-06-25
      • 2023-03-18
      • 2015-12-29
      • 2011-03-18
      • 2014-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多