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

Indekseringsstrategi for forskellige kombinationer af WHERE-klausuler inkl. tekst mønstre

Dit tilføjede prædikat bruger LIKE operatør:

AND network LIKE '%'

Den faktiske forespørgselsplan afhænger af, hvad du sender i stedet for '%'. Men generelt er almindelige btree-indekser ubrugelige til dette. Du skal bruge et trigramindeks eller bruge tekstsøgningsinfrastrukturen eller lignende, afhængigt af hvilke mønstre du måske leder efter.

Se:

Du kan endda kombinere flere indekseringsstrategier. Eksempel:

Hvis det skulle være:

AND network = '<input_string>'

så skal du med alle midler faktisk bruge = operator, ikke LIKE . Årsager i stigende rækkefølge af betydning:

  1. kortere
  2. mindre forvirrende
  3. gør jobbet for Postgres-planlæggeren enklere (meget lidt billigere)
  4. korrekt

    Hvis du ved et uheld sender en streng med specialtegn, kan du få forkerte resultater. Se:




  1. Mysql JOIN (flere) tabeller

  2. Sådan konverteres polygondata til linjesegmenter ved hjælp af PostGIS

  3. Lagret procedure til kopiering af data fra en tabel til en anden

  4. Vælg (hent) alle poster fra flere skemaer ved hjælp af Postgres