假设我已经定义了一个复合索引和顶点标签,如下所示:
mgmt = g.getManagementSystem()
name = mgmt.makePropertyKey('name').dataType(String.class).make()
god = mgmt.getVertexLabel('god')
mgmt.buildIndex('byName',Vertex.class).addKey(name).indexOnly(god).buildCompositeIndex()
mgmt.commit()
如何在Gremlin中利用此索引?
假设它类似于g.V('label','god').has('name','zeus')
,哪个性能更高?
g.V('label','god').has('name','zeus')
g.V('name','zeus').has('label','god')
传统上我们会选择(2)因为名称比标签更具选择性,但顶点标签是否有一些特殊之处会使这种情况不真实?
答案 0 :(得分:3)
好的,您已经发现,它目前在Gremlin中是不可能的,并且只能通过查询API获得。关于表现:你的两种方法不会有所作为;在引擎盖下,两个查询都会生成相同的Cassandra / HBase查询(或者您正在使用的任何存储后端)。
干杯, 丹尼尔
答案 1 :(得分:1)
它在TP2中不起作用,但可以与TP3一起使用(Titan 0.9 /下一版本)。目前你可以这样做:
g.query().has('label','god').has('name','zeus').vertices()
还不知道性能配置文件。