Et indeks er en datastruktur, der forbedrer hastigheden af datahentningsoperationer i en database.
I Neo4j kan du oprette et indeks over en egenskab på enhver node, der har fået en etiket. Når du har oprettet et indeks, vil Neo4j administrere det og holde det opdateret, når databasen ændres.
For at oprette et indeks, brug CREATE INDEX ON
udmelding. Sådan:
CREATE INDEX ON :Album(Name)
I ovenstående eksempel opretter vi et indeks på Navn egenskab for alle noder med Album etiket.
Når sætningen lykkes, vises følgende meddelelse:
Når du opretter et indeks, vil Neo4j oprette indekset i baggrunden. Hvis din database er stor, kan det tage noget tid.
Først når Neo4j er færdig med at oprette indekset, bliver det bragt online, og det kan bruges i forespørgsler.
Se indekset
Indekser (og begrænsninger) bliver en del af det (valgfrie) databaseskema.
I Neo4j-browseren kan du gennemgå alle indekser og begrænsninger ved at bruge :schema
kommando.
Du skal blot skrive dette:
:schema
Du vil se en liste over alle indekser og begrænsninger:
Indekstip
Når et indeks er blevet oprettet, vil det automatisk blive brugt, når du udfører relevante forespørgsler.
Neo4j giver dig dog også mulighed for at håndhæve et eller flere indekser med et hint. Du kan oprette et indekstip ved at inkludere USING INDEX ...
i din forespørgsel.
Så vi kunne håndhæve ovenstående indeks som følger:
MATCH (a:Album {Name: "Somewhere in Time"}) USING INDEX a:Album(Name) RETURN a
Du kan også give flere tip. Du skal blot tilføje en ny USING INDEX
for hvert indeks, du ønsker at håndhæve.
At indeksere eller ikke indeksere?
Når Neo4j opretter et indeks, opretter det en redundant kopi af dataene i databasen. Derfor vil brug af et indeks resultere i, at mere diskplads bliver brugt, plus langsommere skrivning til disken.
Derfor skal du afveje disse faktorer, når du beslutter dig for, hvilke data/egenskaber der skal indekseres.
Generelt er det en god idé at oprette et indeks, når du ved, at der vil være en masse data på bestemte noder. Hvis du synes, det tager for lang tid at returnere forespørgsler, kan det måske hjælpe at tilføje et indeks.