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 15-10-2008
chass chass is offline
Miembro
 
Registrado: jun 2008
Posts: 24
Poder: 0
chass Va por buen camino
Question cual es mas rapido???

buenos dias gente: tengo una duda y es la siguiente
sucede que tengo que optimizar la velocidad de procesamiento de un sistema y al ver el codigo me di cuenta que inserta registro en una base de datos firebird desde la interfaz delphi de la siguiente manera:

(en pseudo delphi)


contador: integer;
begin
contador:=0;
while contador=numero_de_registros
begin
//hace un select de una tabla primero y como
//esta en un sqlquery lo ejecuta de la siguiente mnera
data.Params[0].AsTime:=var1.date;
data.Close();
data.Open();
//el resultado se almacena en un dataset
if va1=dataset.fields[0].asdate then
begin
//no hace nada
end

else
begin
//inserta si la comparacion es falsasqlquery.sql.add('insert into table(val1,val2) values'+ var1+','+ var2);
sqlquery.execsql();
contador++;
end;
end;

si inserta 1 o 10 o hasta 25 registro la velocidad es aceptable
pero al insertar 100 o 300 registro me tarda como 2 minutos..
mi pregunta es si al realizar una especie de procedimiento almacenado no se optimizaria un poco mas ?
Desde paraguay les mando un gran abrazo y muchas gracias por su ayuda
Responder Con Cita
  #2  
Antiguo 15-10-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por chass Ver Mensaje
...mi pregunta es si al realizar una especie de procedimiento almacenado no se optimizaria un poco mas ?
En absoluto amigo, con procedimientos almacenados los datos se mueven más rápido porque la base de datos hace todo el trabajo.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #3  
Antiguo 15-10-2008
chass chass is offline
Miembro
 
Registrado: jun 2008
Posts: 24
Poder: 0
chass Va por buen camino
muuuuuuuuuuuchas gracias.. es que tengo dos dias para optimizar entr el 60 y 80% por lo menos ese proceso..
gracias
Responder Con Cita
  #4  
Antiguo 15-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por enecumene Ver Mensaje
En absoluto amigo, con procedimientos almacenados los datos se mueven más rápido porque la base de datos hace todo el trabajo.

Saludos.
Hola ene, a mi me gustaría saber porqué es más rápido en este caso. Los datos que se insertan de cualquier forma tienen que viajar del cliente al servidor ¿no?

// Saludos
Responder Con Cita
  #5  
Antiguo 15-10-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por roman Ver Mensaje
Hola ene, a mi me gustaría saber porqué es más rápido en este caso. Los datos que se insertan de cualquier forma tienen que viajar del cliente al servidor ¿no?

// Saludos
La ventaja de un procedimiento almacenado es que al ser ejecutado, en respuesta a una petición de usuario, es ejecutado directamente en el motor de bases de datos, el cual usualmente corre en un servidor separado. Como tal, posee acceso directo a los datos que necesita manipular y solo necesita enviar sus resultados de regreso al usuario, deshaciéndose de la sobrecarga resultante de comunicar grandes cantidades de datos salientes y entrantes.

Saludos
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 15-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Amigo, dame algo más digerible . A ver, una sentencia INSERT también la ejecuta el servidor, ¿qué no? Y, ¿qué necesito mandarle? Los datos que voy a insertar. ¿Qué le tengo que mandar al procedimiento almacenado? Supongo que también los datos, ¿qué no?

Mencionas que el servidor posee acceso directo a los datos que necesita manipular, pero, ¿cuáles datos? Si apenas los voy a insertar, el servidor no tiene esos datos ¿o sí?

Vamos, entiendo, que si voy, por ejemplo, a transferir datos de una tabla a otra, o manipular muchos registros que ya existen en el servidor, desde luego será más rápido dejarlo todo en manos de éste, pero en este caso de inserciones no termino de entender cuál es la ventaja por sobre, digamos, un prepared query.

// Saludos
Responder Con Cita
  #7  
Antiguo 15-10-2008
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola,
a parte de la discusión, no entiendo el proceso de inserciones.
Puedes revisar el código o explicarlo con un pequeño juego de ensayo?
Por otro lado, si tienes componentes visuales asociados a los dataset, te recomiendo desconectarlos previamente y luego volverlos a conectar. Se ahorra muchísimo tiempo evitando el refresco de los datos en la pantalla.

Dataset.DisableControls;

tu codigo

Dataset.EnableControls


Suerte.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #8  
Antiguo 15-10-2008
Delfino Delfino is offline
Miembro
 
Registrado: jul 2003
Ubicación: Madrid
Posts: 974
Poder: 21
Delfino Va por buen camino
El pseudo Delphi no va bien , entenderiamos mejor el autentico
Si usas un TIBQuery pon su propiedad Unidirectional a True o mejor utilizar directamente el TIBSQL,
Si por cada valor q tienes q insertar necesitas enviarlo desde tu aplicacion, mejor utilizas esto, si puedes hacer lo mismo con stored procedure, o sea generar los valores desde el mismo, en este caso mejor lo segundo..
__________________
¿Microsoft? No, gracias..
Responder Con Cita
  #9  
Antiguo 15-10-2008
chass chass is offline
Miembro
 
Registrado: jun 2008
Posts: 24
Poder: 0
chass Va por buen camino
Cita:
Empezado por Delfino Ver Mensaje
El pseudo Delphi no va bien , entenderiamos mejor el autentico
Si usas un TIBQuery pon su propiedad Unidirectional a True o mejor utilizar directamente el TIBSQL,
Si por cada valor q tienes q insertar necesitas enviarlo desde tu aplicacion, mejor utilizas esto, si puedes hacer lo mismo con stored procedure, o sea generar los valores desde el mismo, en este caso mejor lo segundo..
jajaj mi pseudo delphi es terrible pero creo que es solo el resultado de programar en 3 o 4 lenguajes diferentes..
en cuanto a los TIBQuery no los he usado porq no hice yo este codigo, solo me toca optimizarlo..
es un trabajo dificil al menos cuando no tiene comentarios, ningun tipo de documentacion y con nombre de variables poco (o nada) intuitivas.
pero ahora lo estoy implementando en un stored procedure.. veremos que sale..
gracias por las respuestas..
Responder Con Cita
  #10  
Antiguo 15-10-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Amigo chass si quieres optimizar tus consultas; te aconsejaria que leas este tremendo Libro de trucos y demas ;En las paginas 16,17,18,19,20,21,22 el autor esta hablando exactamente de lo que estas deseando hacer;
Incluso para ti amigo Roman ahi sacaras tus dudas;
Saludos.......
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #11  
Antiguo 15-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Se me estaba pasando este mensaje. Muchas gracias por la recomendación, le voy a dar una leída

// Saludos
Responder Con Cita
  #12  
Antiguo 15-10-2008
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Talking

Chekealo Roman y luego nos comentas y sacas tus conclusiones para que le ayudemos a chass.
Saludos....
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #13  
Antiguo 15-10-2008
chass chass is offline
Miembro
 
Registrado: jun 2008
Posts: 24
Poder: 0
chass Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
Amigo chass si quieres optimizar tus consultas; te aconsejaria que leas este tremendo Libro de trucos y demas ;En las paginas 16,17,18,19,20,21,22 el autor esta hablando exactamente de lo que estas deseando hacer;
Incluso para ti amigo Roman ahi sacaras tus dudas;
Saludos.......
Excelente libro.. gracias
Responder Con Cita
  #14  
Antiguo 15-10-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Hola

También pueden leer esto que me parece interesante.

http://www.sql-server-performance.co...edures_p1.aspx

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #15  
Antiguo 16-10-2008
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por rgstuamigo
Chekealo Roman y luego nos comentas y sacas tus conclusiones
He visto por encima el libro que mencionas y las páginas que indicas, pero aunque tocan el tema de optimizar consultas utilizando una sola transacción en lugar de una por cada registro insertado, no trata el tema que originó este hilo, que es el de la comparación entre procedimientos almacenados e inserciones a pelo.

De todas formas seguiré mirando, pues se ve interesante el libro.

// Saludos
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
Ayudenme Rapido, Rapido omarys Varios 6 04-06-2011 09:45:34
¿Qué es más rapido? jcarteagaf Humor 3 05-07-2008 02:48:58
¿Cuál es su distribución favorita?, y ¿cuál considera la más segura? ArdiIIa La Taberna 11 24-07-2007 23:59:54
Cual es la razon por la cual perdura la memoria? jhonny Noticias 0 30-01-2007 00:41:38
Saber exactamente cual es cual en un DBLookUpComboBox bustio OOP 3 03-02-2005 23:16:58


La franja horaria es GMT +2. Ahora son las 09:36:06.


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