Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Creación de Indices

From: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: [pgsql-es-ayuda] Re: [pgsql-es-ayuda] Creación de Indices
Date: 2012-06-22 19:16:58
Message-ID: CA+TBOYLbsncwyDuA=-jCHhcTAKioNmEwPvK8o6F-2cDufHDndQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

El 22 de junio de 2012 09:09, Sergio Valdes Hurtado
<svh(dot)pgsql(at)gmail(dot)com>escribió:

>
>
> El 21 de junio de 2012 21:34, Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>escribió:
>
>
>> Excerpts from Sergio Valdes Hurtado's message of jue jun 21 17:33:29
>> -0400 2012:
>> > El 21 de junio de 2012 17:06, Alejandro Carrillo <fasterzip(at)yahoo(dot)es
>> >escribió:
>> >
>> > > 1) Crea un indice por cada campo que vayas a filtrar con frecuencia:
>> rbd,reg_cod,ano_pago,
>> > > ind_reli,rut_sost ; es decir no crees indices compuestos ya que estos
>> > > exigen que la consulta se haga por todos los campos.
>> > >
>> > En realidad las tres consultas son ídenticas, sólo cambian en el where ,
>> > ya que una es rbd in (..), la otra es rut_sost in(..) y la última
>> reg_cod
>> > in (..). La primera trae pocos datos ya que normalmente se pregunta por
>> uno
>> > o dos rbd, la segunta trae mas datos, ya que un rut_sost puede tener
>> varios
>> > rbd y la última es la que mas datos trae, ya que un reg_cod tiene muchos
>> > rut_sost.
>> > ¿Debo crear índices distintos para cada una de las consultas?
>>
>> No. Mientras menos índices, mejor, porque los INSERT y UPDATE son más
>> lentos mientras más índices hay.
>>
>> > ¿Deben ser índividuales o compuestos?
>>
>> Eso depende. Lo que dice Alejandro, más arriba, no es cierto: si tienes
>> índices en los campos (a,b,c) pueden usarse para atender consultas con
>> WHERE a, b. Así que la decisión de si usar individuales o compuestos no
>> depende de otros factores.
>>
>> Yo pienso que te puede servir un índice así
>> create index fff on tabla (rbd) where ind_reli in ('S', 'N')
>> sobre todo si hay muchos otros casos en ind_reli.
>>
>> --
>> Álvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
>>
>
> bien, probaré creando tres indices, uno que contenga rbd, ano_pago,
> mes_pago e ind_reli (where ind_reli ..)
> otro con rut_sost, ano_pago, mes_pago e ind_reli (where ind_reli ..) y el
> ultimo con reg_cod, ano_pago, mes_pago e ind_reli (where ind_reli ..)
> Veré que pasa y les cuento
>
>
>
> --
> Sergio Valdés H.
>

Acabo de crear los siguientes indices:

CREATE INDEX ind_rbd_ano_mes_reli
ON public.temp_orden_pago USING btree (rbd, ano_pago, mes_pago,
ind_reli)
WHERE ind_reli in ('N', 'S');

CREATE INDEX ind_sost_ano_mes_reli
ON public.temp_orden_pago USING btree (rut_sost, ano_pago, mes_pago,
ind_reli)
WHERE ind_reli in ('N', 'S');

CREATE INDEX ind_region_ano_mes_reli
ON public.temp_orden_pago USING btree (reg_cod, ano_pago, mes_pago,
ind_reli)
WHERE ind_reli in ('N', 'S');

Y las consultas mejoraron el rendimiento considerablemente, asi que gracias
a todos por su ayuda.

Saludos,

--
Sergio Valdés H.

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Guillermo Villanueva 2012-06-22 22:00:01 Re: permisos
Previous Message Alvaro Herrera 2012-06-22 18:51:29 Re: permisos