From: | Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
Cc: | pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org> |
Subject: | Re: [pgsql-es-ayuda] Ayuda con índices |
Date: | 2010-10-22 19:05:18 |
Message-ID: | AANLkTi=xbSCvgLqLESHJHhuf4rXy=t5O2fpZ6OkJUJB4@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 22 de octubre de 2010 13:32, Alvaro Herrera
<alvherre(at)commandprompt(dot)com>escribió:
> Excerpts from Julio Cesar Rodriguez Dominguez's message of vie oct 22
> 15:25:03 -0300 2010:
>
> > base_revision(at)servidor(dot)no-ip(dot)org=# EXPLAIN ANALYZE select idcliente from
> > cc_clientes c inner join cc_estados e using(idestado)
>
> ¿para qué va a usar el índice si va a tener que recorrer la tabla
> completa?
>
Ok entiendo que va a recorrer toda la tabla de clientes, pero también debe
recorrer toda la tabla de estados?, no debería ser algo como:
base_revision(at)servidor(dot)no-ip(dot)org=# EXPLAIN ANALYZE select estado from
cc_clientes c inner join cc_estados e using(idestado) where idcliente = 2;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------
Nested Loop (cost=0.00..16.55 rows=1 width=32) (actual time=0.039..0.043
rows=1 loops=1)
-> Index Scan using cc_clientes_pkey on cc_clientes c (cost=0.00..8.27
rows=1 width=4) (actual time=0.013..0.014 rows=1 loops=1)
Index Cond: (idcliente = 2)
-> Index Scan using cc_estados_pkey on cc_estados e (cost=0.00..8.27
rows=1 width=36) (actual time=0.021..0.023 rows=1 loops=1)
Index Cond: (e.idestado = c.idestado)
Total runtime: 0.080 ms
(6 filas)
entiendo que aquí usa el indice de la tabla de estados, pero este resultado
lo obtuve con set enable_seqscan to off; , regresandolo a on:
revision(at)servidor(dot)no-ip(dot)org=# EXPLAIN ANALYZE select estado from cc_clientes
c inner join cc_estados e using(idestado) where idcliente = 2;
QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------
Hash Join (cost=8.28..9.77 rows=1 width=32) (actual time=0.082..0.088
rows=1 loops=1)
Hash Cond: (e.idestado = c.idestado)
-> Seq Scan on cc_estados e (cost=0.00..1.35 rows=35 width=36) (actual
time=0.003..0.020 rows=35 loops=1)
-> Hash (cost=8.27..8.27 rows=1 width=4) (actual time=0.035..0.035
rows=1 loops=1)
-> Index Scan using cc_clientes_pkey on cc_clientes c
(cost=0.00..8.27 rows=1 width=4) (actual time=0.032..0.033 rows=1 loops=1)
Index Cond: (idcliente = 2)
Total runtime: 0.115 ms
(7 filas)
discúlpame si estoy siendo muy ingenuo.
From | Date | Subject | |
---|---|---|---|
Next Message | Alvaro Herrera | 2010-10-22 19:48:37 | Re: Sobre performance |
Previous Message | Emanuel Calvo Franco | 2010-10-22 18:53:02 | Re: Nuevo libro sobre rendimiento en PostgreSQL |