Pyt, jeg fandt problemet.
Forespørgselsplanlæggeren var smartere end mit legetøjstestsæt; Da de fleste rækker matcher forespørgslen, gik den til en sekventiel scanning.
Hvis jeg prøver med ilike '%nd 0%'
i stedet matcher ingen rækker og FORKLAR ANALYSER rapporter Bitmap Index Scan on test3_value_trgm_idx
korrekt.
Så normalisering af den originale JSONB på denne måde fungerer. Men jeg vil også prøve at finde og sammenligne en anden måde ved at bruge regulære udtryk over TEXT
, for at undgå at skulle oprette og vedligeholde endnu en tabel.