Nieważne, znalazłem problem.
Planer zapytań był mądrzejszy niż mój zestaw testowy zabawek; ponieważ większość wierszy pasuje do zapytania, przeprowadzono skanowanie sekwencyjne.
Jeśli spróbuję z ilike '%nd 0%'
zamiast tego żadne wiersze nie pasują, a raporty WYJAŚNIJ ANALIZĘ Bitmap Index Scan on test3_value_trgm_idx
poprawnie.
Tak więc normalizacja oryginalnego JSONB w ten sposób działa. Ale spróbuję też znaleźć i porównać inny sposób, używając wyrażeń regularnych zamiast TEXT
, aby uniknąć konieczności tworzenia i obsługi kolejnej tabeli.