Titan在索引键上的查找速度非常慢?

时间:2013-06-17 12:39:16

标签: gremlin titan

使用Titan w / Cassandra v 0.3.1,我通过createKeyIndex创建了一个顶点键索引,如Titan docs中所述。

gremlin> g.createKeyIndex("my_key", Vertex.class)
==>null

我现在在图表中有appx 50k节点和186k边缘,并且我发现使用my_key的查找之间存在显着的性能差异。此查询大约需要5秒钟才能运行:

gremlin> g.V.has("my_key", "abc")
==>v[12345]

而使用索引ID的时间不到1秒:

gremlin> g.v(12345)
==>v[12345]

my_key没有唯一的约束(我不想),但我想知道导致这种性能差异的原因。如何提高查找非唯一索引顶点键的性能?

1 个答案:

答案 0 :(得分:5)

这里的问题是使用.has,它是一个过滤函数,不会使用任何索引。来自GremlinDocs

  

值得注意的是has的语法类似于g.V("name", "marko"),它与关键索引查找的区别在于   这样会表现得更快。相反,这一行g.V.has("name", "marko")将迭代检查name属性的所有顶点   匹配的每个顶点将明显慢于键   指数方法。

对于上面的示例,这将使用索引并快速执行查找(< 1秒):

gremlin> g.V("my_key", "abc")
==>v[12345]