Delphi - Pueden los procedimientos alentar un proceso largo

 
Vista:

Pueden los procedimientos alentar un proceso largo

Publicado por Roberto Garcia Garcia (21 intervenciones) el 17/10/2008 03:55:56
Hola tengo la siguiente cuestion

Tengo un programa que realiza una consulta en una base de datos que regresa aproximadamente 350000 registros en un query, con ese resultado recorro el query registro por registro para procesarlo. Como una parte del proceso llamo a un procedimiento que hace algunas validaciones y dependiendo de la validadcion hace inserciones o actualizaciones en otra tabla de la misma base de datos.

Pero el procedimiento tiene algo asi como 15 lineas y mi pregunta es si esas 350000 llamadas a ese procedimiento pueden afectar en cierta medida el tiempo que tarda en teminar el programa.

Seria lo mismo o un tanto mas rapido copiar y pega esas lineas en donde se hace la llamda al procedimiento.

Gracias Roberto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Pueden los procedimientos alentar un proceso la

Publicado por pacopaz (104 intervenciones) el 17/10/2008 17:05:59
No sé donde tengas definido el procedimiento, y tengo que hacerle al vidente para intuir que desde el un programa haces la petición de los 350,000 registros y luego, desde el programa recorres los registros y de uno en uno vas ejecutando acciones.
Si te soy sincero esto es tremendamente ineficiente aunque mayormente escalable y mantenible. Si lo que quieres es traerte la información y ejecutar las acciones directamente en el programa y no en la base de datos lo haría aún más ineficiente, por que? Por el tráfico de estos a través de la red y la compilación de los procedimientos almacenados en la base de datos, además de los procedimientos de integridad y seguridad de cada llamada. Es decir: tráfico en la red y re-trabajo innecesario en el servidor.
No mencionas a tu manejador de base de datos, sin embargo, los registros los puedes manipular de forma más rápida desde ella. SQL Server y Oracle (entre otros) pueden implementar cursores, que harían el recorrido de tus registros directamente en el servidor, con alto consumo de memoria, pero sin tráfico en la red. Hay mucho que se puede hacer en la base de datos sin necesidad de estar llevando y regresando información.
Mi recomendación es que te acerques a la programación de tu base de datos y alejes los procedimientos largos y pesados de tu implementación en el programa. Al final, para lo que uno quiere los programas son para hacer consultas y capturar información, de lo demás se puede encargar la base de datos.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar