Re: ejecucion mas rapida que a base de scripts

From: Henry <hensa22(at)yahoo(dot)es>
To: Rafael De_Linares <rafaeldelinares(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: ejecucion mas rapida que a base de scripts
Date: 2007-02-10 22:52:46
Message-ID: 482825.39109.qm@web30813.mail.mud.yahoo.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Rafael De_Linares <rafaeldelinares(at)gmail(dot)com> escribió:

El día 10/02/07, Rafael De_Linares <rafaeldelinares(at)gmail(dot)com> escribió: Saludos y gracias por tu pronta respuesta, ya escribiendo el correo, pensaba que seguro que alvaro contesta....

Bueno te comento, el procesimiento se ejecuta por bloques de registro por ejemplo.

nombre empleado fechaimporte ciudad1 ciudad2
rafael ; 01/01/07; malaga; malaga;
rafael ; 28/01/07; sevilla; malaga;
rafael ; 11/02/07; sevilla; malaga;
rafael ; 18/02/07; malaga; malaga
marilo ; 01/04/07; marbella; malaga
marilo ; 28/05/07; malaga; malaga
marilo ; 11/08/07; sevilla; malaga
marilo ; 18/08/07; sevilla; malaga
miryam; 01/02/07; malaga; malaga;
miryam ; 28/01/07; sevilla; malaga;
miryam ; 11/02/07; sevilla; sevilla;
miryam ; 18/02/07; malaga; malaga
lucia ; 01/04/07; marbella; malaga
lucia ; 28/09/07; malaga; sevilla
lucia ; 11/08/07; sevilla; malaga
lucia ; 18/08/07; sevilla; malaga
pepe ; 01/04/07; marbella; malaga
pepe ; 28/05/07; malaga; malaga
pepe ; 11/08/07; granada; malaga
pepe ; 18/08/07; granada; malaga

/* las fechas son aleatorias

el proceso a ejecutar seria,
para cada empleado, elegir aquel registro que sea el mas antiguo y que ciudad2 sea sevilla, si no existe ninguna ocurrencia buscar y elegir aquella que ciudad1 sea sevilla, en el caso de no cumplir ninguna de las dos reglas no se considera el empleado

el resultado tendria que ser

rafael ; 28/01/07; sevilla; malaga;

marilo ; 11/08/07; sevilla; malaga
miryam ; 11/02/07; sevilla; sevilla;
lucia ; 11/08/07; sevilla; malaga

pepe no se considera por no tener ninguna ciudad sevilla.

no se si te ha quedado claro.

en php, lo que hago es procesar de la siguiente forma :
- hago un select distinct por nombre de empleado.
- cargo una tabla temporal con los datos de ese empleado,
- verifico la regla que te he comentado.
- inserto en la tabla resulltante el valor elegido.

y asi para cada valor de nombre empleado.

como te comento un proceso muy lento para tener una carga de datos enorme, el numero de registros que tengo es de aprox 24000 registros, y un select distinct por nombre empleado me da alrededor de 14000 registros.

los datos como habras adivinado son ficticios.

gracias

El día 10/02/07, Alvaro Herrera <alvherre(at)commandprompt(dot)com > escribió: Rafael De_Linares escribió:

> La pregunta es la siguiente, siguiendo en mi afan de mientras mas rapido
> mejor. me encuentro en que realizo una serie de operaciones recorriendo la
> tabla y realizando operaciones a cada uno de los registros, cojo aquellos
> que son iguales por un campo, los incorporo a una tabla auxiliar, veo sus
> caracteristicas, veo cual me interesa e introduzco en otra tabla aquel que
> segun mis evaluaciones considero mejor.

tal vez esta consulta te pueda dar alguna idea

insert into alguna_tabla
select campo1,campo2 ..... from tabla as d where
d.fecha= (select min(fecha) from datos as dx where trim(dx.empleado)=trim(d.empleado)) and
lower(trim(d.ciudad1))='sevilla'

donde la sub consulta

select min(fecha) from datos as dx where trim(dx.empleado)=trim(d.empleado)
va a retornar la menor fecha para cada empleado.

and esto va en la consulta principal :
lower(trim(d.ciudad1))='sevilla' para filtrar solo sevilla.

espero ke te ayude en algo.


---------------------------------

LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message ruben avila galindo 2007-02-10 23:02:18 Crystal report 8.0 + Visual basic 6.0+POSTGRESQL
Previous Message Damian Culotta 2007-02-10 22:45:23 OT: Querys con JDBC