我试图在NE4OJ中实现索引以加快某些查询速度。
其中一个问题是使用where people.key IN [<10 string values here>]
根据字符串查找某些人。
我们在数据库中有大约180k个节点,标签为People
,查询需要41秒才能返回结果。
所以我在这个属性上创建了一个模式索引,再次运行查询并且没有任何改变。由于好奇,我决定按ID选择:
match (people:People)
where ID(people) IN [789806,908117,934851,934857,935125,935174,935177,935183,935581,935586,935587,935588,935634,935636,935637,935638,935639]
return ID(people)
花了92毫秒。完善!所以我尝试创建一个名为test
的新属性,对其进行索引并设置与节点ID相同的值。然后我运行以下查询:
match (people:People)
where people.test IN [789806,908117,934851,934857,935125,935174,935177,935183,935581,935586,935587,935588,935634,935636,935637,935638,935639]
return ID(people)
又花了41s(41000ms)。我错过了什么吗?我真的不明白......是否有一些性能问题?
仅供参考,我们在Debian上使用NEO4J 2.0.0。
谢谢你们!
答案 0 :(得分:1)
据我所知,IN
操作未在2.0.x中使用现有索引。因此,请尝试升级到2.1.3并重试。