On 12/8/06, ernesto contreras <eeljuri(at)gmail(dot)com> wrote:
>
> Si, se le han ejecutado los Analyze's y Vacuum's respectivos, y las tres
> tablas se requieren, lo que pasa es que eliminé para presentárlo aquí,
> algunos campos.
>
> Los analistas que tengo acá, se percataron que eliminando el "merge join",
> set enable_mergejoin = off; entonces sí usa los índices, el optimizador
> usa nesteed loop, así el query responde como se espera.
>
> Por qué se debe hacer así, por qué el optimizador no toma el camino que
> dicta la lógica, entendiendo que siempre busca el mejor camino. ???
>
> Gracias.
>
>
> ---------- Forwarded message ----------
> From: Jaime Casanova < systemguards(at)gmail(dot)com>
> Date: Dec 8, 2006 1:44 AM
> Subject: Re: [pgsql-es-ayuda] cómo puedo obligar uso de índices
> To: ernesto contreras <eeljuri(at)gmail(dot)com >
> Cc: Lista PostgreSql < pgsql-es-ayuda(at)postgresql(dot)org>
>
> On 12/7/06, ernesto contreras <eeljuri(at)gmail(dot)com> wrote:
> > Claro vale
> >
> > explain analyze SELECT pol.idepol , re.mtolocal as prima_devengada
> > FROM poliza as pol, recibo as re
> > WHERE pol.idepol IN (SELECT idepol
> > FROM part_inter_pol
> > WHERE codinter='001225'
> > AND indlider='S')
> > AND re.idepol = pol.idepol;
> >
>
> Imagino que has ejecutado VACUUM ANALYZE o al menos ANALYZE?
>
> aunque el query tal como lo pones no necesita de las 3 tablas:
>
> explain analyze
> SELECT re.idepol, re.mtolocal as prima_devengada
> FROM recibo as re
> WHERE re.idepol IN (SELECT idepol FROM part_inter_pol
> WHERE codinter='001225'
> AND indlider='S');
>
> --
> Atentamente,
> Jaime Casanova
>
> "Programming today is a race between software engineers striving to
> build bigger and better idiot-proof programs and the universe trying
> to produce bigger and better idiots.
> So far, the universe is winning."
> Richard Cook
>