Re: Obligar al optimizador a usar un index en particular en un SELECT

From: Pere Rodríguez <pere(dot)rodriguez(dot)rodriguez(at)gmail(dot)com>
To: "manuel lamas" <manuel3w(at)hotmail(dot)com>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Obligar al optimizador a usar un index en particular en un SELECT
Date: 2006-03-08 08:12:43
Message-ID: e1b2e97f0603080012k65b0a6d7v@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Interesante ...

Solo una pregunta trivial: ¿Ejecutas vacuum analyze regularmente sobre
la tabla dossiers?

Saludos,

pere

2006/3/7, manuel lamas <manuel3w(at)hotmail(dot)com>:
>
>
>
> >From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
> >To: manuel lamas <manuel3w(at)hotmail(dot)com>
> >Subject: Re: [pgsql-es-ayuda] Obligar al optimizador a usar un index en
> >particular en un SELECT
> >Date: Tue, 7 Mar 2006 14:42:33 -0300
> >
> >manuel lamas wrote:
> >
> > > Lo que sigue lo entiendo perfectamente.
> > >
> > > Cuando pido que etat_ing_est_img = 'processing' el optimizador usa el
> > > índice in_dossiers_etat_ing_est_img porque hay pocas lineas y sale mas
> > > barato.
> > >
> > > Cuando pido que etat_ing_est_img = 'new' el optimizador hace un scan de
> >la
> > > tabla porque hay muchas lineas y en ese caso el optimizador lo ve mas
> > > barato.
> >
> >Ok, perfecto.
> >
> > > Igual me hubiera gustado ver cuanto sale en el ultimo query usando el
> > > índice in_dossiers_etat_ing_est_img en lugar del scan de la tabla.
> >
> >set enable_seqscan to off;
> >explain analyze ...
> >
>
>
> Muy bueno! Miren la diferencia del costo. Primero usa normalmente el scan de
> tabla y después usa el índice.
>
> Preguntas:
>
> Como afecta "enable_seqscan" al optimizador?
>
> Cuando pongo set enable_seqscan to off; afecta solo el SELECT que sigue o
> todos las comandas que siguen.?
>
> Que pasa si después del SELECT no pongo set enable_seqscan to on;?
>
>
>
> EXPLAIN ANALYSE SELECT dossierid FROM DOSSIERS WHERE etat_ing_est_img =
> 'new' ;
> QUERY PLAN
> ---------------------------------------------------------------------------------------------------------------
> Seq Scan on dossiers (cost=0.00..9719.19 rows=7766 width=17) (actual
> time=0.176..2001.824 rows=7316 loops=1)
> Filter: ((etat_ing_est_img)::text = 'new'::text)
> Total runtime: 2007.562 ms
> (3 rows)
>
> ECS=# set enable_seqscan to off;
> SET
> ECS=# EXPLAIN ANALYSE SELECT dossierid FROM DOSSIERS WHERE etat_ing_est_img
> = 'new' ;
> QUERY
> PLAN
> ----------------------------------------------------------------------------------------------------------------------------------------------------
> Index Scan using in_dossiers_etat_ing_est_img on dossiers
> (cost=0.00..16640.08 rows=7766 width=17) (actual time=8.082..402.201
> rows=7316 loops=1)
> Index Cond: ((etat_ing_est_img)::text = 'new'::text)
> Total runtime: 407.500 ms
> (3 rows)
>
> ECS=# set enable_seqscan to on;
>
>
>
> ---------------------------(fin del mensaje)---------------------------
> TIP 4: No hagas 'kill -9' a postmaster
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Pablo Braulio 2006-03-08 08:33:27 Re: Introducir null en campo date.
Previous Message Espartano 2006-03-08 03:38:57 Re: Regresando tabla