sql >> Database teknologi >  >> RDS >> Mysql

Neo4j - Opret et indeks ved hjælp af Cypher

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.


  1. Sammenligning af fejltider for Amazon Aurora, Amazon RDS og ClusterControl

  2. MySQL:Tilføj sekvenskolonne baseret på et andet felt

  3. Udførelse af dataændringsrevision ved hjælp af tidsmæssig tabel

  4. Sammenkædning i Transact-SQL