怎样加快数组属性的any in查找
发布于 5 年前 作者 prolights 2592 次浏览 来自 问答

具体情况是这样的有个属性name:[“刘德”,“Andy L”], 查询的时候是使用match (e:Entity) where e:人物 and ANY (ax in e.name where ax =‘刘德’) return e limit 10; 这个时候虽然对name建了模式索引,但是使用any in查找并不走索引,所以查询效率非常低。 请问有什么方法可以加快查询速度吗?全文索引对于any in的查询有加速效果吗? 谢谢!

8 回复

对name属性添加索引 试试

@pangguoming 对name添加了模式索引CREATE INDEX ON : Entity(name); 但在进行any in查找时很慢,通过explain看到,此时不走索引。 只有在用完全的数组进行匹配时才走的索引,比如这样match (e:Entity) where e:人物 and e.name =[“刘德”,“Andy L”] return e limit 10;查找时才走索引。

使用IN在数组中查询元素会走索引,在3.5版本以后。还有你为什么要用ANY?感觉多此一举了。

@graphway 判断一个数组属性里是否存在一个元素叫"刘德",需要这么写吧。如果写成 “刘德” in e.name是不符合语法的。

‘刘德’ IN e.name是符合语法的

@graphway neo4j 3.2.6image.png, 请问3.5之前的版本这种用法的in不走索引时正常的是吧?

对的。数组索引应该是3.4以后才出来的。

回到顶部