2015-07-13 3 views
0

У меня есть этот титановый дб схему:Titan DB плохой индекс

val mgmt = getManagementSystem 

val guid = mgmt.makePropertyKey("guid").dataType(classOf[String]).make() 
mgmt.buildIndex("byGuid",classOf[Vertex]).addKey(guid).unique().buildCompositeIndex() 
mgmt.commit() 

mgmt.makePropertyKey("foo").dataType(classOf[String]).make() 
mgmt.makePropertyKey("fo2").dataType(classOf[String]).make() 
mgmt.makePropertyKey("about").dataType(classOf[String]).make() 

/** 
foo foo foo 
*// 

mgmt.commit() 

, когда я пытаюсь сделать это:

db.V.has("guid", guid).next() 

Затем в Debug это сообщение:

[warn] c.t.t.g.t.StandardTitanTx - Query requires iterating over all vertices [()]. For better performance, use indexes 

Я titan, и все указано в документации. Я понятия не имею, что не так, пожалуйста, помогите. Спасибо.

+1

возможный дубликат [Titan Внимание: Запрос требует перебирает все вершины] (http://stackoverflow.com/questions/21725758/titan-warning-query-requires-iterating-over-all-vertices) – Peanut

ответ

0

Вам нужно подождать, пока составной индекс переключится с INSTALLED на ENABLED.

Для того, чтобы сделать это, изменить свой код, чтобы посмотреть, как этот

// Create an index 
m = graph.openManagement() 
m.buildIndex('names', Vertex.class).addKey(m.getPropertyKey('name')).buildCompositeIndex() 
m.commit() 
graph.tx().commit() 

// Block until the SchemaStatus transitions from INSTALLED to REGISTERED 
ManagementSystem.awaitGraphIndexStatus(graph, 'names').status(SchemaStatus.REGISTERED).call() 

// Reindex using TitanManagement 
m = graph.openManagement() 
i = m.getGraphIndex('names') 
m.updateIndex(i, SchemaAction.REINDEX) 
m.commit() 

// Enable the index 
ManagementSystem.awaitGraphIndexStatus(graph, 'names').status(SchemaStatus.ENABLED).call() 

Для получения дополнительной информации, смотрите here

Смежные вопросы