Gremlin Titan对索引键的查找速度非常慢?

Gremlin Titan对索引键的查找速度非常慢?,gremlin,titan,Gremlin,Titan,使用Titan w/Cassandra v 0.3.1,我通过createKeyIndex创建了一个顶点索引,如中所述 我现在在图中有50k个appx节点和186k条边,我发现使用my_key进行查找时,性能有显著差异。运行此查询大约需要5秒钟: gremlin> g.V.has("my_key", "abc") ==>v[12345] 而使用索引ID所需时间不到1秒: gremlin> g.v(12345) ==>v[12345] gremlin> g.V("

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

我现在在图中有50k个appx节点和186k条边,我发现使用
my_key
进行查找时,性能有显著差异。运行此查询大约需要5秒钟:

gremlin> g.V.has("my_key", "abc")
==>v[12345]
而使用索引ID所需时间不到1秒:

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

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

这里的问题是使用
.has
,它是一个过滤函数,不会使用任何索引。发件人:

值得注意的是,
has
的语法类似于
g.V(“name”,
“marko”)
,其区别在于作为键索引查找和作为 这样做的速度会更快。相反,这一行,
g.V.has(“name”,
“marko”)
,将遍历所有顶点,检查 每个顶点进行匹配,并将明显慢于关键点 指数法

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


从Titan 0.5.0开始,这并不准确:
g.V.has(“my_key”、“abc”)
现在将在
my_key
键上使用可用索引。看泰坦的。
gremlin> g.V("my_key", "abc")
==>v[12345]