Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-08-2013
LuisAlf:: LuisAlf:: is offline
Miembro
 
Registrado: nov 2009
Posts: 60
Poder: 15
LuisAlf:: Va por buen camino
Post Qué es más rápido?

Hola!

Vengo con una simple duda...

Me gustaria saber que es mas rapido.. acabo de encontrar 2 metodos de hacer actualizaciones con ADO..
El primer metodo y el que siempre uso es:

Código Delphi [-]
   with ADQ1 do
   begin
       Close;
       SQL.Clear;
       SQL.Add('UPDATE inventario SET status="SURTIDO" WHERE id='+identificador);
       ExecSQL;
   end;

Y recientemente me encontre con esta:

Código Delphi [-]
        with ADQ1 do
        begin
          Close;
          SQL.Clear;
          SQL.ADD('SELECT inventario.leadcode, inventario.status, inventario.id'
                  +' FROM.....
                    +' WHERE (((inventario.id)='+identificador+'));');
          Open;
        end

        adq1.Edit;
        adq1.Recordset.Fields['STATUS'].Value:='SURTIDO';
        ADQ1.UpdateRecord;

Cual metodo es mas adecuado y cual es mejor, en cuanto a rapidez?

Gracias, cualquier comentario sera de gran ayuda.
Responder Con Cita
  #2  
Antiguo 09-08-2013
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
yo creo que el primero
mientras menos paso mejor
al menos es mi manera de pensar
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 09-08-2013
LuisAlf:: LuisAlf:: is offline
Miembro
 
Registrado: nov 2009
Posts: 60
Poder: 15
LuisAlf:: Va por buen camino
Hola Oscarac!

Sabes que acabo de hacer varias pruebas con los dos ejemplos diferentes que antes mecione.. y por medio de codigo, mostraba el tiempo que tardaba en hacer la actualizacion...
La primera forma es decir... la pura consulta del UPDATE... en promedio devolvia 350 milisegundos... y de la otra forma es decir poniendo el Adoquery en edit... duraba en promedio 290.

Como puedes ver las apariencias engañan....

Y al parecer es mas efectivo el segundo metodo, segun la pruebas.
Responder Con Cita
  #4  
Antiguo 09-08-2013
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
y con cuantos registros has probado?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 09-08-2013
LuisAlf:: LuisAlf:: is offline
Miembro
 
Registrado: nov 2009
Posts: 60
Poder: 15
LuisAlf:: Va por buen camino
Solo lo he probado con un registro, que lo devuelve el "identificador".

De alli mi duda. Despues hare pruebas en un ciclo para ver resultados.
Responder Con Cita
  #6  
Antiguo 09-08-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Un registro.
Buena prueba
Responder Con Cita
  #7  
Antiguo 10-08-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Cita:
Empezado por LuisAlf:: Ver Mensaje
Solo lo he probado con un registro, que lo devuelve el "identificador".

De alli mi duda. Despues hare pruebas en un ciclo para ver resultados.
Pues al menos, deberías probar con unos 10,000 registros (obviamente, tomando los tiempos de cada transacción y promediándolos) para más o menos darle "carga" al componente..., con un sólo registro es muy engañosa tu cifra.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #8  
Antiguo 10-08-2013
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
no pues...
con 1 solo registro?
no te pases

otro factor es el motor de base de datos, no mencionas cual estas usando
prueba con 100,000 registros
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 10-08-2013
LuisAlf:: LuisAlf:: is offline
Miembro
 
Registrado: nov 2009
Posts: 60
Poder: 15
LuisAlf:: Va por buen camino
Tienen razón...

Acabo de ver que el poner el Adoquery en modo de edición (edit) para hacer una actualización solo funciona cuando es un registro en especifico.

Obviamente al hacer un ciclo recorriendo una consulta y dentro de él poner el adoquery en modo de edicion para hacer una actualización registro por registro, va a durar mas tiempo que hacer una sola consulta de UPDATE.

En cuanto a mi duda (solo para un registro), queria saber si era mas rapido hacer el select, luego despues el update por medio del identificador pero me di cuenta que es mas rapido hacer la consulta y poner el adoquery en modo de edición para aplicar una actualización al registro individual.
Responder Con Cita
  #10  
Antiguo 10-08-2013
Avatar de TiammatMX
TiammatMX TiammatMX is offline
Miembro
 
Registrado: jun 2006
Ubicación: Universo Curvo\Vía Láctea\Sistema Solar\Planeta Tierra\América\México\Puebla\Heróica Puebla de Zaragoza\Jardines de San Manuel\Home
Posts: 746
Poder: 18
TiammatMX Va camino a la fama
Wink

Cita:
Empezado por LuisAlf:: Ver Mensaje
Tienen razón...
Usually does, mate!!

Cita:
Empezado por LuisAlf:: Ver Mensaje
...Acabo de ver que el poner el Adoquery en modo de edición (edit) para hacer una actualización solo funciona cuando es un registro en especifico...

En cuanto a mi duda (solo para un registro), queria saber si era mas rapido hacer el select, luego despues el update por medio del identificador pero me di cuenta que es mas rapido hacer la consulta y poner el adoquery en modo de edición para aplicar una actualización al registro individual.
Es que tienes varias opciones en éste caso. Una, tomar los datos mediante TEdit's o lo que se requiera, construir una sentencia SQL que te permita actualizar/ingresar el registro y continuar tu procesamiento. Dos, usar componentes DataAware conectados a la tabla directamente y a su respectivo campo, ejecutar un Post implícito y listo; es lo mismo que la opción 1, pero sin el engorro de "crear" la sentencia.

Aquí el peligro estriba en que si tu usuario se le olvida/no captura/cambia/infiere los datos, "ya te llevó la tía de las muchachas" y no puedes controlar con precisión en dónde radicaría un posible error.
__________________
Felipe Eduardo Ortiz López. Delphi programmers does it recursively...

"Un programador, es un creador de universos en donde sólo él es responsable. Universos de complejidad prácticamente ilimitada que se puede crear en forma de programas de ordenador." - Joseph Weizenbaum.

Témele a los profetas... y a aquellos que están listos para morir por "la verdad", ya que como regla general hacen morir a muchos otros con ellos, frecuentemente antes que ellos, y a veces en lugar de ellos. — Umberto Eco
Responder Con Cita
  #11  
Antiguo 10-08-2013
Avatar de juanelo
juanelo juanelo is offline
Miembro
 
Registrado: sep 2007
Posts: 1.083
Poder: 18
juanelo Va por buen camino
Cita:
Empezado por tiammat Ver Mensaje
Pues al menos, deberías probar con unos 10,000 registros (obviamente, tomando los tiempos de cada transacción y promediándolos) para más o menos darle "carga" al componente..., con un sólo registro es muy engañosa tu cifra.
Yo me pregunto algo, ¿que operacion implica el modificar 10,000 registros?, mi opinion en relacion con "updates" es que cuando se necesiten modificar tantos registros, son normalmente procesos que se corren sin tanta frecuencia.
Donde si tenemos que hacer enfasis, es las consultas que puedan implicar una gran cantidad de registros, y muchas veces aunque nuestra consulta "vuele como cohete", el cuello de botella viene en el "front end".
Saludos
__________________
Ya tengo Firma!
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
Que es mas Rapido While,For,Repeat JerS OOP 18 16-06-2011 19:58:26
Ayudenme Rapido, Rapido omarys Varios 6 04-06-2011 09:45:34
cual es mas rapido??? chass Varios 14 16-10-2008 00:24:29
¿Qué es más rapido? jcarteagaf Humor 3 05-07-2008 02:48:58
...rapido de mente... Jure Humor 5 08-10-2004 16:09:13


La franja horaria es GMT +2. Ahora son las 23:00:44.


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