PostgreSQL GIN index más lento que GIST para pg_trgm?

A pesar de lo que dice toda la documentación, encuentro que los índices GIN son significativamente más lentos que los índices GIST para las búsquedas relacionadas con pg_trgm. Esto está en una tabla de 25 millones de filas con un campo de texto relativamente corto (longitud promedio de 21 caracteres). La mayoría de las filas de texto son direcciones de la forma "123 Main st, City".

El índice GIST tarda unos 4 segundos con una búsqueda como

select suggestion from search_suggestions where suggestion % 'seattle';

Pero GIN tarda 90 segundos y el siguiente resultado cuando se ejecuta conEXPLAIN ANALYZE:

Bitmap Heap Scan on search_suggestions  (cost=330.09..73514.15 rows=25043 width=22) (actual time=671.606..86318.553 rows=40482 loops=1)
  Recheck Cond: ((suggestion)::text % 'seattle'::text)
  Rows Removed by Index Recheck: 23214341
  Heap Blocks: exact=7625 lossy=223807
  ->  Bitmap Index Scan on tri_suggestions_idx  (cost=0.00..323.83 rows=25043 width=0) (actual time=669.841..669.841 rows=1358175 loops=1)
        Index Cond: ((suggestion)::text % 'seattle'::text)
Planning time: 1.420 ms
Execution time: 86327.246 ms

Tenga en cuenta que el índice selecciona más de un millón de filas, aunque solo coincidan 40k filas. ¿Alguna idea de por qué esto funciona tan mal? Esto está en PostgreSQL 9.4.

Respuestas a la pregunta(1)

Su respuesta a la pregunta