Ayuda con índices

From: Julio Cesar Rodriguez Dominguez <jurasec(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Ayuda con índices
Date: 2010-10-22 18:25:03
Message-ID: AANLkTikWfL1Syxzwrz6mwktJK-RyLvrCsG3n2Y1G-3bw@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hola buen día alguien podrías ayudarme a entender por que Postgresql no
utiliza los indices que según yo debieran ser utilizados en un consulta
sencilla. Las estructuras de las tablas son:

Tabla «public.cc_clientes»
Columna | Tipo |
Modificadores
---------------------+-----------------------+---------------------------------------------------------------------------
idcliente | integer | not null valor por omisión
nextval('cc_clientes_idcliente_seq'::regclass)
persona_fisica | boolean |
rfc | text |
ap_paterno | text |
ap_materno | text |
nombre | text |
idestado | integer |
idmunicipio | integer |
idlocalidad | integer |
idcolonia | integer |

Índices:
"cc_clientes_pkey" PRIMARY KEY, btree (idcliente)
"idx_cc_clientes_idcuenta" btree (idcuenta)
Restricciones de llave foránea:
"cc_clientes_idestado_fkey" FOREIGN KEY (idestado, idmunicipio,
idlocalidad, idcolonia) REFERENCES cc_colonias(idestado, idmunicipio,
idlocalidad, idcolonia)

Tabla «public.cc_estados»
Columna | Tipo | Modificadores

--------------+---------------+-------------------------------------------------------------------------
idestado | integer | not null valor por omisión
nextval('cc_estados_idestado_seq'::regclass)
estado | text |
usuario | character(20) |
fecha_cambio | date |
Índices:
"cc_estados_pkey" PRIMARY KEY, btree (idestado)
Referenciada por:
TABLE "cc_municipios" CONSTRAINT "cc_municipios_idestado_fkey" FOREIGN
KEY (idestado) REFERENCES cc_estados(idestado)

base_revision(at)servidor(dot)no-ip(dot)org=# EXPLAIN ANALYZE select idcliente from
cc_clientes c inner join cc_estados e using(idestado)
base_revision-# ;
QUERY PLAN

---------------------------------------------------------------------------------------------------------------------
Hash Join (cost=1.79..569.79 rows=5895 width=4) (actual time=0.091..14.425
rows=5895 loops=1)
Hash Cond: (c.idestado = e.idestado)
-> Seq Scan on cc_clientes c (cost=0.00..486.95 rows=5895 width=8)
(actual time=0.021..6.415 rows=5895 loops=1)
-> Hash (cost=1.35..1.35 rows=35 width=4) (actual time=0.057..0.057
rows=35 loops=1)
-> Seq Scan on cc_estados e (cost=0.00..1.35 rows=35 width=4)
(actual time=0.011..0.030 rows=35 loops=1)
Total runtime: 17.445 ms
(6 filas)

no debería utilizare el indice cc_estados_pkey de la llave primaria de la
tabla de cc_estados?, en este ejemplo es pequeño el tiempo, pero hay muchas
más consultas que utilizan las tablas de estados, municipios, localidades y
colonias y siempre son secuenciales las búsquedas de información en esas
tablas.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2010-10-22 18:32:40 Re: Ayuda con índices
Previous Message FRANCISCO JOSE PALAO VILLANUEVA 2010-10-22 17:22:08 versión 9.01.1