match 真的只要有个索引就能查询数据吗?

标签的索引和属性的索引不同。如果标签的某个属性有索引,但是标签本身没有索引,您无法基于该标签执行MATCH语句。 这句怎么理解呢

LOOKUP 和 MATCH 都是 先通过一个属性找到对应的VID,这个过程就要用到属性索引。而且必须要有这个索引——因为索引的写性能很差,所以要加哪些属性索引这个事情就交给用户决定了。

而,还有个奇怪的索引,是对标签本身的索引,这个奇怪的索引是用来统计有多少点的。 它和属性索引没啥太多关系。 但是别把这个奇怪的索引给LOOKUP、MATCH用,它们用不了,它们要属性索引。

哪里找到的这句话,写的好拗口啊。

1 个赞

https://docs.nebula-graph.com.cn/2.0/3.ngql-guide/7.general-query-statements/2.match/

匹配标签里面的说明

MATCH语句使用原生索引查找起始点,起始点可以在模式的任何位置。即一个有效的MATCH语句,必须有一个属性、标签或者点已经创建索引 .

这句话说的也不全面,因为在没有索引的时候也可以查询,

match(n) where id(n) ==“player100” return n

match(n) where id(n) ==“player100” return n

这个查询中直接指定了VID,所以不用再通过属性索引去寻找VID了

是,这个描述不严谨:必须有索引或者VID

1 个赞