Strunt i, jag hittade problemet.
Frågeplaneraren var smartare än min leksakstestuppsättning; eftersom de flesta rader matchar frågan, gick den för en sekventiell genomsökning.
Om jag försöker med ilike '%nd 0%'
istället matchar inga rader och FÖRKLARA ANALYSER rapporter Bitmap Index Scan on test3_value_trgm_idx
korrekt.
Så att normalisera den ursprungliga JSONB på detta sätt fungerar. Men jag ska också försöka hitta och jämföra ett annat sätt, genom att använda reguljära uttryck över TEXT
, för att undvika att behöva skapa och underhålla ytterligare en tabell.