Jeg har valgt lave indexering i vores database, da jeg har tænkt mig at kigge på hvordan man kan optimere den. Jeg har gjort så jeg har over en million biler i databasen, hvilket gør at en sequential scan ikke helt er hurtig nok til det vi ønsker. Vi har en metode der søger efter en specifik bil ud fra dens serialnumber. Jeg har derfor lavet et index for serialnumber i tablet car.

CREATE INDEX car_serialnumber ON car(serialnumber)

Grunden til at vi laver det her index, er fordi at det meget gerne burde blive hurtigere. Vi kan tage et eksempel med en telefonbog. Vi har her alle mulige navne. Tænk så på hvis de ikke var sat i alfabetisk rækkefølge. Det ville tage alt for lang tid at finde det navn du leder efter, det samme er det her med vores database, hvor vi inden indexering, bare ville gå slavisk igennem alle entries i databasen.
Ligesom i en telefonbog, vil vi organisere vores entries i en specifik rækkefølge, for at gøre det nemmere for os selv at finde det specifikke vi leder efter.

PostgreSQL – CREATE INDEX eksempel

En simpel version af CREATE INDEX statement:

CREATE INDEX index_name ON table_name [USING method]
(
    column_name [ASC | DESC] [NULLS {FIRST | LAST }],
    ...
);

I syntaxen:

  • 1. Specificer index navnet efter CREATE INDEX delen. Index navnet burde være noget der betyder noget og let at huske.
  • 2. Specificer navnet på det table som indexed skal være på.
  • 3. Specificer den index metode som fx. btreehashgistspgistgin, og brin. PostgreSQL bruger btree som default.
  • 4, Skriv en eller flere columns der skal være i indexet. ASC og DESC specificerer sorteringsrækkefølgen. ASC er default. NULLS FIRST eller NULLS LAST specificerer nulls sortering before or after non-nulls. NULLS FIRST er default når DESC er valgt og NULLS LAST er default når DESC ikke er specificeret.

For at se forskellen på hvor længe det tager med en sequential scan vs en index scan, kan man vælge at anvende explain analyze foran sit query, for at få fortalt hvor længe det tager for databasen at fremskaffe den information man beder om.

Tags:

No responses yet

Leave a Reply

Your email address will not be published. Required fields are marked *

Latest Comments

No comments to show.