索引与约束语法不同
Different in index vs constraint syntax
创建索引或约束时,我对术语有点不清楚。例如:
CREATE CONSTRAINT cs ON (p:Person) ASSERT p.name IS UNIQUE
CREATE INDEX my_index FOR (p:Person) ON (p.age)
什么时候用FOR
,什么时候用ON
?或者它们是两个不同的版本,还是一个已弃用?我还看到 ASSERT
与 REQUIRE
的使用,但也不确定何时使用哪个。
如果您使用 CREATE INDEX,它不会强制唯一性。所以基本上是为了加快搜索速度。
CREATE CONSTRAINT 确实强制执行单一性。
当您执行 :schema
时,您会看到在这两种情况下都会创建一个索引,因为同样为了强制唯一性,快速查找很有帮助 :)
语法 CREATE CONTRAINT [constraint_name] ON ... ASSERT ...
似乎很旧。当前 documentation (v4.4) 中并未具体提及。但是,它在同一页面上被引用为 DROP CONSTRAINT
命令已弃用。
当前语法一致CREATE CONTRAINT [constraint_name] FOR ... REQUIRE ...
创建索引或约束时,我对术语有点不清楚。例如:
CREATE CONSTRAINT cs ON (p:Person) ASSERT p.name IS UNIQUE
CREATE INDEX my_index FOR (p:Person) ON (p.age)
什么时候用FOR
,什么时候用ON
?或者它们是两个不同的版本,还是一个已弃用?我还看到 ASSERT
与 REQUIRE
的使用,但也不确定何时使用哪个。
如果您使用 CREATE INDEX,它不会强制唯一性。所以基本上是为了加快搜索速度。 CREATE CONSTRAINT 确实强制执行单一性。
当您执行 :schema
时,您会看到在这两种情况下都会创建一个索引,因为同样为了强制唯一性,快速查找很有帮助 :)
语法 CREATE CONTRAINT [constraint_name] ON ... ASSERT ...
似乎很旧。当前 documentation (v4.4) 中并未具体提及。但是,它在同一页面上被引用为 DROP CONSTRAINT
命令已弃用。
当前语法一致CREATE CONTRAINT [constraint_name] FOR ... REQUIRE ...