No importa, encontré el problema.
El planificador de consultas fue más inteligente que mi conjunto de prueba de juguete; Dado que la mayoría de las filas coinciden con la consulta, se realizó un análisis secuencial.
Si pruebo con ilike '%nd 0%'
en su lugar, ninguna fila coincide y EXPLAIN ANALYZE informa Bitmap Index Scan on test3_value_trgm_idx
correctamente.
Entonces, normalizar el JSONB original de esta manera funciona. Pero también intentaré encontrar y comparar otra forma, usando expresiones regulares sobre TEXT
, para evitar tener que crear y mantener otra tabla.