使用Titan w/Cassandra v 0.3.1,我创建了一个顶点键索引,createKeyIndex如Titan文档中所述.
gremlin> g.createKeyIndex("my_key", Vertex.class)
==>null
Run Code Online (Sandbox Code Playgroud)
我现在在图中有appx 50k节点和186k边缘,我发现使用的查找之间存在显着的性能差异my_key.此查询大约需要5秒钟才能运行:
gremlin> g.V.has("my_key", "abc")
==>v[12345]
Run Code Online (Sandbox Code Playgroud)
而使用索引ID的时间不到1秒:
gremlin> g.v(12345)
==>v[12345]
Run Code Online (Sandbox Code Playgroud)
my_key没有一个独特的约束(我不想),但我想知道是什么导致这种性能差异.如何提高非唯一索引顶点键的查找性能?
这里的问题是使用.has,这是一个过滤功能,不会使用任何索引.来自GremlinDocs:
值得注意的是,语法
has类似于g.V("name", "marko"),它具有不同的关键索引查找功能,因此执行速度更快.相反,这一行将g.V.has("name", "marko")迭代所有顶点,检查每个顶点的name属性是否匹配,并且将明显慢于键索引方法.
对于上面的示例,这将使用索引并非常快速地执行查找(<1秒):
gremlin> g.V("my_key", "abc")
==>v[12345]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
954 次 |
| 最近记录: |