Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-10-2008
antrahxg antrahxg is offline
Miembro
 
Registrado: ene 2007
Posts: 10
Poder: 0
antrahxg Va por buen camino
Pueden los procedimineto alentar un proceso largo

Hola mi duda surge a raiz de lo siguiente

Tengo un programa que el unico proceso que realiza es una consulta y el query1 me regresa aproximandamente 350,000 registros, luego recorro registro por registro ese query1 con un while.

Dentro del while tengo un procedimiento que se encarga de insertar o actualizar el registro actual del query1 en otra tabla de la misma base de datos, pero en realidad ese procedimiento son unas 15 lineas, seria mas conveniente poner esas lineas dentro del while o las 350000 llamadas que se hacen al procedimiento no afectan en realidad el tiempo de ejecucion del programa.

Otra pregunta, Dentro del while lo que realmente hago es otra consulta para saber si el registro actual del query1 esta en la otra tabla para saber si actualizar o insertar, obviamente cuando la tabla destino se va llenando la consulta se va a haciendo mas tardada.

Seria mas rapido si pusiera la insercion dentro de un try excep, si el try falla el except haria la actualizacion, seria algo como


try
sql.add('Insert into Tabla ..........');
open
except
sql.add('Update Tabla ..............');
execSql;
end;

Gracias
Roberto Garcia

Última edición por antrahxg fecha: 17-10-2008 a las 05:45:59. Razón: Dar mas detalles
Responder Con Cita
  #2  
Antiguo 17-10-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Todo el proceso completo, incluido los whiles y demás, debería ser un procedimiento almacenado. ¿Por qué? porque al ser un SP, las consultas están ya compiladas en el servidor y te ahorras el tiempo de compilar (qry.prepare). Además no hay tráfico de red, ya que todo se hace desde el lado del servidor, por tanto, es más ágil.

La velocidad propia de cada SQL, ya dependerá de los índices que tengas creado al efecto en la BBDD, y por ende, la eficiencia de cada SQL está condicionado a esos índices y la cantidad de registros afectados por ella.

En resumen: sí debería ser más rápido desde un SP

En cuanto a tu duda del try ... except... bueno, Firebird 2 cuenta con la instrucción MERGE que hace eso, intenta actualizar y si no existe, inserta. Obviamente sin saber tu motor de bases de datos, poco más puedo decir.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Fin de semana muy largo.... BlueSteel La Taberna 16 23-09-2008 08:37:59
Me largo Ñuño Martínez La Taberna 40 19-08-2008 15:57:00
Como Transormar un string largo a Integer largo RodoRodo Varios 1 27-06-2007 02:26:29
Actualizar form al volver a el mientras se realiza proceso largo(p.e: recorrer db) Wonni Varios 5 18-06-2007 19:44:00
Proceso muy largo ? Coco_jac Varios 5 22-12-2005 21:54:59


La franja horaria es GMT +2. Ahora son las 03:11:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi