El 22 de octubre de 2010 13:32, Alvaro Herrera
<alvhe...@commandprompt.com>escribió:

> Excerpts from Julio Cesar Rodriguez Dominguez's message of vie oct 22
> 15:25:03 -0300 2010:
>
> > base_revis...@servidor.no-ip.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_revis...@servidor.no-ip.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:

revis...@servidor.no-ip.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.

Responder a