Re: [pgsql-es-ayuda] Ayuda con índices

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.

In response to

Responses

Browse pgsql-es-ayuda by date

  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