Hola. Creo que es porque no estas haciendo where de nada, y traer todos los
registros equivale a un full scan de las tablas.
El may 26, 2014 9:24 AM, "Guillermo E. Villanueva" <guillermo...@gmail.com>
escribió:

> Buenos días, se que ya hubieron muchas preguntas al respecto pero este
> caso me llama la atención y los molesto consultando.
> Tengo la siguiente query:
> explain
> select *
> from
> nacer.historicotemp h
>  inner join nacer.smiafiliados s on
> h.clavebeneficiario = s.clavebeneficiario;
>
> Con siguiente resultado
>
> "Hash Join  (cost=33335.39..1817942.71 rows=5692774 width=1002)"
> "  Hash Cond: ((h.clavebeneficiario)::text = (s.clavebeneficiario)::text)"
> "  ->  Seq Scan on historicotemp h  (cost=0.00..578624.74 rows=5692774
> width=762)"
> "  ->  Hash  (cost=15677.73..15677.73 rows=394773 width=240)"
> "        ->  Seq Scan on smiafiliados s  (cost=0.00..15677.73 rows=394773
> width=240)"
>
> Ambas tablas tienen indexada la columna clavebeneficiario y como ven ambas
> tablas creo que son lo suficientemente grande para la prueba.
> (La tabla h tiene mas de 5 millones de registros y la tabla s tiene unos
> 400 mil registros)
> Yo esperaba que al join lo haga utilizando índices, sin embargo veo que el
> planificador no lo usa, ¿Tienen idea por qué?
> Desde ya muchas gracias
>
> Guillermo Villanueva
>
>

Responder a