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

Flere indekser vs enkelt indeks på flere kolonner i postgresql

Uanset hvor mange indeks du har oprettet på relation, vil kun et af dem blive brugt i en bestemt forespørgsel (hvilket afhænger af forespørgsel, statistik osv.). Så i dit tilfælde ville du ikke få en kumulativ fordel ved at oprette to enkeltkolonneindekser. For at få mest muligt ud af indekset vil jeg foreslå at bruge sammensat indeks på (placering, tidsstempel).

Bemærk, at forespørgsler som ... WHERE timestamp BETWEEN smth AND smth vil ikke bruge indekset ovenfor, mens forespørgsler som ... WHERE location = 'smth' eller ... WHERE location = 'smth' AND timestamp BETWEEN smth AND smth vilje. Det er fordi den første egenskab i indeks er afgørende for søgning og sortering.

Glem ikke at optræde

ANALYZE;

efter indeksoprettelse for at indsamle statistik.

Opdatering: Som @MondKin nævnt i kommentarer visse forespørgsler kan faktisk bruge flere indekser på samme relation. Forespørg for eksempel med OR klausuler som a = 123 OR b = 456 (forudsat at der er indekser for begge kolonner). I dette tilfælde ville postgres udføre bitmap-indeksscanninger for begge indekser, bygge en forening af resulterende bitmaps og bruge det til bitmap-heap-scanning. Under visse forhold kan det samme skema bruges til AND forespørgsler, men i stedet for union ville der være et kryds.



  1. Jeg vil vise flere billeder fra databasen i jsp (jeg kortlægger servlet), så i jsp vil m vises i src af img tag

  2. Node.js ssh2 tunnel holde i live og udføre mysql-forespørgsler

  3. Enhedsklasse fra databasen....Fejl Ugyldig ressource _pm

  4. Hvordan bruger jeg spring data jpa til at forespørge på jsonb-kolonnen?