FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Tardo menos en teclear manualmente los registros
|
#2
|
||||
|
||||
Como estaba de despistado que no note que eran 120 registros!.
Asi, todo lo que dije es "overkill". La forma mas eficiente entonces es mucho mas simple: Carga todos los registros al inicio en un DataSet en memoria y haz los procesos contra ese.
__________________
El malabarista. |
#3
|
|||
|
|||
Buenas ae ido trabajando siguiendo las recomendaciones, ese procedimiento esta en el evento onclick de un boton, estoy tratando de hacer un procedure para luego llamarlo e un thread pero al hacer el procedure no veo los objetos query y table.
por Ejemplo asi veo los objetos pero si intento hacerlo no veo los query |
#4
|
||||
|
||||
¿Y eso qué tiene que ver con lo que te hemos aconsejado?
Creo que te estás liando, o puede que no te hayamos entendido lo que quieres hacer realmente. |
#5
|
||||
|
||||
Es que no tiene sentido que te compliques la vida con hilos y cosas raras para unos pocos registros, eso debe tardar segundos.
Por ejemplo, una simple prueba para que te hagas una idea, tengo una tabla con más de 250.000 registros (y unos 90 campos) y los paso a otra tabla igual, tiempo: 2,6 segundos. En tu caso, con BD distintas y comprobando los que ya existen para actualizarlos, por código Delphi, etc. calcúlale unos 3 a 5 segundos... como mucho. |
#6
|
|||
|
|||
En el procedimiento la mayoria son update porque verifico que si existe lo actualice y si no existe lo inserte
|
#7
|
||||
|
||||
Yo tengo un proceso de migración que trabaja sobre tres tablas de la misma BD (una con 25.000 tuplas y las otras con menos de 500) haciendo varias selecciones parciales con sus respectivos bucles, comparaciones, cálculos, inserciones, actualizaciones (de saldos)... y en el peor de los escenarios tarda 3 minutos.
|
#8
|
||||
|
||||
Cita:
Tienes 2 opciones: 1) Definirlo dentro de la clase (parte privada). 2) Pasarle los objetos necesarios como parámetros. Por otro lado, trabajar con Threads y Base de datos no es trivial. Las conexiones no suelen ser Threadsafe, así que al thread ademas de pasarle toda la información necesaria para trabajar, deberás dotarle de lo necesario (ConnectionString, por ejemplo) para crear una nueva conexión sobre la Base de Datos.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 02-11-2022 a las 11:40:42. |
#9
|
||||
|
||||
Mi granito de arenta:
Un simple log puede ser un procedimiento como este:
Prueba el bulce principal sin hacer nada y ves cuanto tarda. Si es algo lógico (segundos), agregas la validación: Si sigue siente un tiempo lógico, prueba agregando le update. Si todo está en un tiempo lógico, el problema estará en el INSERT o en UPDATE final que haces. Finalmente, trata de traerte todo lo que necesites en el primer SELECT. Con algo así solo deberás ver si el campo existe_integrante contiene algo o es nulo/cero y te ahorras un SQL por cada vuelta de bucle.
|
#10
|
|||
|
|||
Agradecido, hoy me voy a poner a resolver esto y les comento
|
#11
|
|||
|
|||
Buenas Tomando la Recomendación de Todos he ido probando, al hacer el log me di cuenta que perdía tiempo en la consulta para verificar el detalle para lo cual en vez de hacerlo tome la recomendación de Casimiro Notevi
y usando el log que me recomendó duilioisola pude ver lo que tardaba en cada registro en mi ultima prueba tardo 48 minutos 78.648 registros creo que estaría bien dentro de los tiempos o por lo menos se me han mejorado los tiempo considerando que antes duraba 20 min con 120 registros y por tratarse de una base de datos como dbbisam mi Codigo
|
#12
|
||||
|
||||
¿Has comprobado que entra alguna vez a la parte except?
Según tengo entendido, si un update no "toca" ningún registro no falla. |
#13
|
||||
|
||||
Cita:
Mi app principal carga cientos de miles de registros en como 2-3 minutos, y eso contando las tardanzas de viajar por internet. Y tengo un cliente contra dbisam. Lo único que se me ocurre es que te falta poner un indice. Pero igual, haciendo todo en memoria y guardando debería no tomar mas de un par de segundos.
__________________
El malabarista. Última edición por mamcx fecha: 04-11-2022 a las 15:22:02. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
funciona bien en windows 7 64b pero en XP no funciona | ASAPLTDA | Varios | 5 | 06-05-2011 16:24:50 |
Consulta demasiado compleja | oscarac | SQL | 7 | 10-03-2011 14:46:16 |
Query tarda demasiado en ejecutarse | richy08 | SQL | 2 | 04-03-2008 18:28:47 |
La consulta es demasiado compleja | mane | Conexión con bases de datos | 0 | 26-12-2007 10:00:07 |
La insercion de registros funciona pero..... | ilichhernandez | Conexión con bases de datos | 1 | 22-10-2005 11:24:33 |
|