FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Optimizacion de Tiempo
Hola buenas tardes...
Mi problema consiste el lo siguiente.... Tengo dos Archivos .dat que me mandan y yo los tomo para actualizar una tabla que tengo en una base de datos. El archivo dat son del cliente HP es algo asi : 125895-988|PQ|N/E|Lapices|N|N 7878AADF|PQ|N/E|Borradores|N|N Asi son los registros que contiene el dat son 118196 registros... Entonces con un Query extraigo de la tabla solamente los que son de ese cliente HP y por medio de parametro le paso el NUMERO DE PARTE entonces si el numero de parte existe en la tabla, modifica 3 campos de la tabla con los datos que tiene el dat pero si no existe los agrega como nuevo Entonces este proceso actualmente me lleva 16 horas realizarlo quiero ver si existe una posivilidad de optimizar dicho codigo....? Las base de datos es Interbase el codigo se los muestro a continuacion: este codigo leo el archivo dat uno se llama Partes y otro Producto, iviemente primero leo uno y hago una consulta sql con el IBquery se que llama qParte: que dice asi:
como ven asi le paso por panametro a la sentencia SQL en Numero si existe edita los campos si no agregalo como nuevo..espero me entiendan...? el codigo que sigue es como leo el dat....
Última edición por jachguate fecha: 08-11-2005 a las 19:43:56. Razón: Explicacion mas amplia (jachguate:etiqueta delphi) |
#2
|
||||
|
||||
Pues 16 horas es un tiempo inadmisible, creo que habría que mirar otras posibilidades, pero tendrás que dar más datos, si el archivo es de tipo texto, se tardaría menos leyendo todos los registros y excluyendo directamente aquellos que no sean de HP, por ejemplo utilizando una Stringlist y luego pasarlos a la tabla.....
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
#3
|
||||
|
||||
Eso!!!, explicaciones detalladas
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
¿Puedes poner el código que estás utilizando actualmente para recorrer el fichero y realizar las busquedas e inserciones?
¿Cual es la Base de Datos de destino?
__________________
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. |
#5
|
||||
|
||||
Las 16 horas será porque está extrayendo a mano (cortando y pegando) los clientes del archivo, porque de otra forma es imposible.
Recuerda comentar, las tablas, campos, modo de acceso (bde, ado, ...) y la BBDD que usas. saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#6
|
|||
|
|||
Para que me sirve ese componente
|
#7
|
|||
|
|||
Ya lo puse el codigo asi te sierve o que mas necesitarias para dyudarme?
|
#8
|
||||
|
||||
Hola Luis Alberto.
Quiero cometnar que en estos foros, normalmente no se edita el mensaje para cambiar su contenido (por ejemplo, agregando el código, como lo has hecho esta vez). Si alguien pide el código, lo usual es ponerlo en un nuevo mensaje (en el mismo hilo) como este último que has escrito. Esto favorece el que se entienda el desarrollo de los hilos para quienes no hemos participado en ellos y quienes lo encuentren en la búsqueda dentro de algunos años , pues al ver a Neftalí pedir el código en el mensaje #4, te desubica si ya has visto el código en el mensaje #1. Luego, he editado tu mensaje para encerrar el código en la etiqueta [delphi], pues de la forma que lo has pegado resulta ilegible. Mas información sobre las etiquetas en los mensajes fijados al inicio de cada foro. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#9
|
||||
|
||||
Cita:
Hasta Luego -
__________________
No todo es como parece ser... |
#10
|
||||
|
||||
Sobre tu problema... 100,000 registros debieran procesarse en cuestión de minutos. Para detectar cual es el cuello de botella, cronómetro en mano, revisá cuanto tiempo está tomando cada parte del proceso: Suponiendo que el comportamiento es líneal, está tomando mas o menos 0.5 segundos por registro.
digamos que el código:
podemos cambiarlo por:
Eso nos dará una idea de que está tardando. Estoy convencido que en tu caso, es la búsqueda del registro la que demora mucho tiempo... quizas el query (qparte) sea ineficiente. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#11
|
|||
|
|||
Gracias por todos sus comentarios la verdad no he entrado mucho a los foros yu no entiendo mucho como se an podido dar cuenta....
|
#12
|
||||
|
||||
Cita:
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#13
|
|||
|
|||
Que casi no entroa foros y no se si hago las cosas bien en los foros...
|
#14
|
||||
|
||||
Saludos
Cita:
(Not) Guía de Estilo, Etiquetas vB:=Delphi-SQL
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#15
|
||||
|
||||
La "cara" de vtdeleon lo expresa todo... , en fin, eso, la guía de estilo...
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
|
|