Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group