Re: [Pgsql-ayuda] indices...

From: "GUSTAVO MARTIN OCAMPO" <gocampo79(at)hotmail(dot)com>
To: alvherre(at)dcc(dot)uchile(dot)cl
Cc: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
Subject: Re: [Pgsql-ayuda] indices...
Date: 2003-11-10 21:36:32
Message-ID: Law10-F23dF3y9xbiR900008c01@hotmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Alvaro, trate de crear la funcion y el indice asi..

CREATE FUNCTION extraer_ano(date) RETURNS int AS 'return extract(year
from $1);' IMMUTABLE STRICT LANGUAGE sql;

pero.......

test=>ERROR: parser: parse error at or near "return" at character 4

pero luego intente lo siguiente......

CREATE FUNCTION extraer_ano(date) RETURNS double precision AS 'select return
extract(year
from $1);' IMMUTABLE STRICT LANGUAGE sql;
CREATE FUNCTION

luego pude crear el indice, pero cuando hice.....

test=>select distinct extraer_ano(fecha_vencimiento) as fecha from
basemovibanco;

consegui lo siguiente......

QUERY PLAN
---------------------------------------------------------------------------------------------------------------------------------
Unique (cost=18100.75..18887.62 rows=15737 width=4) (actual
time=3079.17..3290.59 rows=2 loops=1)
-> Sort (cost=18100.75..18494.19 rows=157373 width=4) (actual
time=3079.16..3209.57 rows=157373 loops=1)
Sort Key: extraer_ano(fecha_vencimiento)
-> Seq Scan on basemovibanco (cost=0.00..3284.73 rows=157373
width=4) (actual time=0.56..2234.29 rows=157373 loops=1)
Total runtime: 3295.85 msec
(5 rows)

....la consulta se demoro mas.
En que estare errando?por lo que estoy viendo no esta usando el indice, y
ademas el plan de ejecución si lo ves es el mismo que el de antes, o sea, en
la linea "sort key" se ve la ejecucion de la funcion
"extraer_ano(fecha_vencimiento)"
y antes se veia la ejecucion de "date_part('year'::text,
fecha_vencimiento)", creo que lo mismo, no?
Si estoy equivocado, aceptare criticas con todo gusto, despues de todo me
gusta aprender.....:-)
Gracias

>From: Alvaro Herrera <alvherre(at)dcc(dot)uchile(dot)cl>
>To: GUSTAVO MARTIN OCAMPO <gocampo79(at)hotmail(dot)com>
>CC: pgsql-ayuda(at)tlali(dot)iztacala(dot)unam(dot)mx
>Subject: Re: [Pgsql-ayuda] indices...
>Date: Mon, 10 Nov 2003 14:20:50 -0300
>
>On Mon, Nov 10, 2003 at 03:22:02PM +0000, GUSTAVO MARTIN OCAMPO wrote:
> > Hola lista, tengo una tabla llamada basemovibanco de la forma:
>
> > test=>explain analyze select distinct extract (year from
> > basemovibanco.fecha_vencimiento) as fecha;
>
> > Hay alguna manera de optimizar esta consulta?
>
>Hum ... prueba con algo como
>CREATE FUNCTION extract_year(date) RETURNS int AS 'return extract(year
>from $1);' IMMUTABLE STRICT LANGUAGE sql;
>
>CREATE INDEX bmb_yr_idx ON basemovibanco (extract_year(fecha_vencimiento));
>
>Luego
>SELECT distinct extract_year(fecha_vencimiento) as fecha FROM
>basemovibanco;
>
>etc. Cocinar apropiadamente.
>
>--
>Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
>Hi! I'm a .signature virus!
>cp me into your .signature file to help me spread!

_________________________________________________________________
Las mejores tiendas, los precios mas bajos, entregas en todo el mundo,
YupiMSN Compras: www.yupimsn.com/compras

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2003-11-10 21:44:24 Re: [Pgsql-ayuda] indices...
Previous Message Patricio Muñoz 2003-11-10 20:45:48 [Pgsql-ayuda] Rendimiento y conexiones