sql >> Databasteknik >  >> RDS >> PostgreSQL

Indexeringsstrategi för olika kombinationer av WHERE-satser inkl. textmönster

Ditt tillagda predikat använder LIKE operatör:

AND network LIKE '%'

Den faktiska frågeplanen beror på vad du passerar istället för '%'. Men i allmänhet är vanliga btree-index värdelösa för detta. Du behöver ett trigramindex eller använda textsökningsinfrastrukturen eller liknande, beroende på vilka mönster du kanske letar efter.

Se:

Du kan till och med kombinera flera indexeringsstrategier. Exempel:

Om det är tänkt att vara:

AND network = '<input_string>'

använd sedan för all del faktiskt = operator, inte LIKE . Orsaker i stigande betydelse:

  1. kortare
  2. mindre förvirrande
  3. gör jobbet för Postgres-planeraren enklare (väldigt lite billigare)
  4. korrekt

    Om du skickar en sträng med specialtecken av misstag kan du få felaktiga resultat. Se:




  1. MySQL ändra tabell och konvertera data från text till datetime

  2. Hur man korrekt infogar newline i nvarchar

  3. Visar LISTAGG-värden i en cell baserat på värdet i en annan kolumn

  4. Få maximalt utan att gruppera