Um índice é uma estrutura de dados que melhora a velocidade das operações de recuperação de dados em um banco de dados.
No Neo4j, você pode criar um índice sobre uma propriedade em qualquer nó que tenha recebido um rótulo. Depois de criar um índice, o Neo4j irá gerenciá-lo e mantê-lo atualizado sempre que o banco de dados for alterado.
Para criar um índice, use o
CREATE INDEX ON
demonstração. Assim:CREATE INDEX ON :Album(Name)
No exemplo acima, criamos um índice no Name propriedade de todos os nós com o Álbum rótulo.
Quando a instrução for bem-sucedida, a seguinte mensagem será exibida:
Quando você cria um índice, o Neo4j cria o índice em segundo plano. Se o seu banco de dados for grande, isso pode levar algum tempo.
Somente quando o Neo4j terminar de criar o índice, ele será colocado online e poderá ser usado em consultas.
Visualizar o Índice
Índices (e restrições) tornam-se parte do esquema de banco de dados (opcional).
No navegador Neo4j, você pode revisar todos os índices e restrições usando o
:schema
comando. Basta digitar isso:
:schema
Você verá uma lista de todos os índices e restrições:
Dicas de índice
Depois que um índice for criado, ele será usado automaticamente quando você realizar consultas relevantes.
No entanto, o Neo4j também permite impor um ou mais índices com uma dica. Você pode criar uma dica de índice incluindo
USING INDEX ...
em sua consulta. Assim, poderíamos aplicar o índice acima da seguinte forma:
MATCH (a:Album {Name: "Somewhere in Time"}) USING INDEX a:Album(Name) RETURN a
Você também pode fornecer várias dicas. Basta adicionar um novo
USING INDEX
para cada índice que você deseja aplicar. Indexar ou não indexar?
Quando o Neo4j cria um índice, ele cria uma cópia redundante dos dados no banco de dados. Portanto, usar um índice resultará em mais espaço em disco sendo utilizado, além de gravações mais lentas no disco.
Portanto, você precisa avaliar esses fatores ao decidir quais dados/propriedades indexar.
Geralmente, é uma boa ideia criar um índice quando você sabe que haverá muitos dados em determinados nós. Além disso, se você achar que as consultas estão demorando muito para retornar, adicionar um índice pode ajudar.