sql >> Databáze >  >> RDS >> PostgreSQL

Strategie indexování pro různé kombinace klauzulí WHERE vč. textové vzory

Váš přidaný predikát používá LIKE operátor:

AND network LIKE '%'

Skutečný plán dotazů závisí na tom, co předáte místo '%'. Ale obecně jsou obyčejné indexy btree k tomu k ničemu. Budete potřebovat trigramový index nebo použít infrastrukturu textového vyhledávání nebo podobně, v závislosti na tom, jaké vzory byste mohli hledat.

Viz:

Můžete dokonce kombinovat více strategií indexování. Příklad:

Pokud to má být:

AND network = '<input_string>'

pak rozhodně použijte = operátor, nikoli LIKE . Důvody ve vzestupném pořadí důležitosti:

  1. kratší
  2. méně matoucí
  3. zjednodušuje práci plánovači Postgres (o něco málo levnější)
  4. správně

    Pokud nedopatřením předáte řetězec se speciálními znaky, můžete získat nesprávné výsledky. Viz:




  1. Dopad události query_post_execution_showplan Extended v SQL Server 2012

  2. Vložení CHOP do DB

  3. Jak zjistím umístění protokolu chyb démona MySQL?

  4. aktualizace sloupce časového razítka časovým razítkem obsahujícím 'T'