sql >> Database teknologi >  >> RDS >> PostgreSQL

Optimer PostgreSQL skrivebeskyttede tabeller

Kolonner, der bruges til filtrering eller deltager (eller, i mindre grad, sortering ) er af interesse for indeksering. Kolonner, der netop er valgt, er knap relevante! For følgende forespørgsel indekserer kun a og e kan være nyttigt:

SELECT a,b,c,d
FROM   tbl_a
WHERE  a = $some_value
AND    e < $other_value;

Her f og muligvis c er også kandidater:

SELECT a,b,c,d
FROM   tbl_a
JOIN   tbl_b USING (f)
WHERE  a = $some_value
AND    e < $other_value
ORDER  BY c;

Efter at have oprettet indekser, test for at se, om de faktisk er nyttige med EXPLAIN ANALYZE . Sammenlign også udførelsestider med og uden indekserne. Det er hurtigt og nemt at slette og genskabe indekser. Der er også parametre til eksperiment med EXPLAIN ANALYZE . Forskellen kan være svimlende eller ikke-eksisterende.
Da dine tabeller er skrivebeskyttede, er indeksvedligeholdelse billig. Det er kun et spørgsmål om diskplads.

Hvis du virkelig vil vide, hvad du laver, start med at læse dokumenterne .

Hvis du ikke ved, hvilke forespørgsler du kan forvente ...

  1. Prøv at logge nok forespørgsler til at finde typiske use cases. Log forespørgsler med parameteren log_statement = all for det. Eller bare log langsomme forespørgsler ved hjælp af log_min_duration_statement .

  2. Opret indekser det kan være nyttigt, og tjek statistikken efter nogen tid for at se, hvad der rent faktisk bliver brugt. PostgreSQL har en hel infrastruktur på plads til overvågning af statistik . En bekvem måde at studere statistik på (og mange andre opgaver) er pgAdmin hvor du kan vælge din tabel / funktion / indeks og få alle data på fanen "statistik" i objektbrowseren (hovedvinduet).

  3. Fortsæt som beskrevet ovenfor for at se, om indekser i brug faktisk fremskynder tingene.

  4. Hvis forespørgselsplanlæggeren skulle vælge at bruge et eller flere af dine indekser, men med ingen eller negativ effekt, er der sandsynligvis noget galt med din opsætning, og du skal studere grundlæggende om ydeevneoptimering:vakuum, analyse, omkostningsparametre, hukommelsesbrug, ...



  1. Problemer med at bruge/vise specialtegn fra Oracle db i .Net app

  2. Affyr og glem DB-logning med ASP.NET

  3. MySQL hentetid optimering

  4. 9.6 Scariest Patch Tournament