sql >> Database >  >> RDS >> PostgreSQL

Indexeringsstrategie voor verschillende combinaties van WHERE-clausules incl. tekstpatronen

Uw toegevoegde predikaat gebruikt de LIKE operator:

AND network LIKE '%'

Het eigenlijke queryplan hangt af van wat u doorgeeft in plaats van '%'. Maar over het algemeen zijn gewone btree-indexen hiervoor nutteloos. Je hebt een trigram-index nodig of gebruik de tekstzoekinfrastructuur of iets dergelijks, afhankelijk van de patronen die je zoekt.

Zie:

U kunt zelfs meerdere indexeringsstrategieën combineren. Voorbeeld:

Als dat zou moeten zijn:

AND network = '<input_string>'

gebruik dan in ieder geval de = operator, niet LIKE . Redenen in oplopende volgorde van belangrijkheid:

  1. korter
  2. minder verwarrend
  3. maakt het werk voor de Postgres-planner eenvoudiger (heel iets goedkoper)
  4. juist

    Als u per ongeluk een tekenreeks met speciale tekens doorgeeft, krijgt u mogelijk onjuiste resultaten. Zie:




  1. Tabellen verwijderen uit database Oracle 10g

  2. Hoe het eerstvolgende hoogste nummer in de database in te voegen

  3. Waar kan ik de lijst met SQLException-foutcodes voor MySQL vinden?

  4. T-SQL om alle gebruikerstoewijzingen met databaserollen/machtigingen voor een login weer te geven