Re: ejecucion mas rapida que a base de scripts

From: "Rafael De_Linares" <rafaeldelinares(at)gmail(dot)com>
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 17:20:13
Message-ID: 1074b94f0702100920x1a6bffbbi23167bb367ba2856@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

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.
>
> Me pregunto si no sera posible hacer ese procesamiento por lotes, en
> lugar de hacerlo registro por registro. La respuesta es cual sea
> exactamente el procesamiento que quieras hacer, y como sean las
> comparaciones entre registros.
>
> Que tal si nos muestras, mas en concreto, cuales son las tablas y cuales
> son las sentencias que estas enviando? Quizas se pueda optimizar.
>
> --
> Alvaro Herrera
> http://www.CommandPrompt.com/
> The PostgreSQL Company - Command Prompt, Inc.
>

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Rafael De_Linares 2007-02-10 17:21:36 Re: ejecucion mas rapida que a base de scripts
Previous Message Alvaro Herrera 2007-02-10 16:49:13 Re: plphp en windows