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.
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 |