From: | "manuel lamas" <manuel3w(at)hotmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Obligar al optimizador a usar un index en particular en un SELECT |
Date: | 2006-03-07 18:08:11 |
Message-ID: | BAY103-F347301C158E71D5E4165B195EE0@phx.gbl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
>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;
From | Date | Subject | |
---|---|---|---|
Next Message | Juan Urrieta Alvarado | 2006-03-07 18:11:00 | formatear fecha |
Previous Message | Jaime Casanova | 2006-03-07 18:06:35 | Re: Introducir null en campo date. |