Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Lentitud consultas mysql con delphi (https://www.clubdelphi.com/foros/showthread.php?t=45203)

Rako 26-06-2007 11:11:45

Lentitud consultas mysql con delphi
 
Hola buenas, pues resulta que en access gracias a una propiedad de los adoquerys las consultas sobre muchas entradas se hacian rapido, sin embargo en mysql esto no ocurre, hemos probado a colocar indices para arreglar el problema de la velocidad y nada...segun el que habia hecho esto antes dice que el problema es e delphi y que no hay nada que hacer, que por mucho que mejoremos la velocidad de consulta en mysql a 0.00001 segundos si delphi tarda 10 segundos nada que hacer...
Pero me extraña que no se pueda hacer que busque rapido en 40 000 entradas...es incompatible mysql con delphi para grandes busqueedas?

Otra cosa, en la parte de modificar los datos de un paciente, salen los campos como DBEdits, se conectan directamente y ahi tambien tarda, es como si se recorrera toda la lista para buscar los datos de ese paciente en particular...pero....si tiene indices como no encuentra directamente la enrrada correspondiente? porque tarda tambien tanto?

Muchas gracias

Neftali [Germán.Estévez] 26-06-2007 12:48:46

¿Podrías poner algo de código de la búsqeda que estás haciendo?
¿SQL? ¿Accedes a la tabla?

Rako 26-06-2007 14:44:18

si ok... pues el problema es en un adotable sobre la tabla, y entonces al activar esa tabla, lee los 40 000 registros y se tira la vida....

Delphius 26-06-2007 15:06:41

Rako, pueden haber miles de factores que hacen que leer esa cómoda cantidad sea lenta.
Como te dijo Neftali, ¿porqué no nos dás mayores detalles?. Por favor da a conocer el código de la consulta.

Por lo último que expones, me estoy imaginando que estan leyendo los datos desde la tabla y no desde un Query.
No es recomendable emplear xxxTable si se dispone de muchos registros. Un ADoTable lee y trae a memoria TODOS los datos. ¿Realmente se necesitan?

Emplea un Query y asegúrate de limitar la cantidad con WHERE, por ejemplo.

Saludos,

Rako 26-06-2007 15:33:00

Si perdon, como dije justo arriba uso una tabla, probare con el query pero es que es q es para insertar nuevos pacientes o modificar sus datos,,,, ok ya miro con el query gracias

eduarcol 26-06-2007 16:12:20

No se si el query del ado lo trae pero la propiedad requestlive permite que se comporte como una tabla a la hora de modificar el registro

Neftali [Germán.Estévez] 26-06-2007 16:34:34

Los componentes ADO poseen la propiedad CursorLocation; Revisa el valor, no sea que te estés trayendo a local demasiados registros.

Rako 28-06-2007 11:50:42

Hola de nuevo, muchas gracias en algunos sitios como en el añadir o modificar los datos del paciente si pude cambiar el table que habia por un query y en el where limitarlo y q sea inmediato....

Pero a la hora de buscar un paciente concreto o al arrancar el programa, que se deben cargar todos los pacientes.... en access con la propiedad de cursorlocation se podia hacer q fuera inmediata la busqyueda...pero en my sql en q debe estar esa propiedad? en server o client? parace q en server va algo mas rapido pero no mucho mas,,tarda un monton en leer los 40 000 pacientes que solo tienen nombre y apellidos ( es una bbdd de pruebas ), la informacion la coge desde un adoquery (select * from tbl_paciente) , llame al antiguo programador y me dijo que hay que cargar todos los pacientes al arrancar el programa irremediablamente y la culpa de la lentitud es delphi me dijo ¬¬

Pero es q me parece raro q para leer tan pocos registros no haya una solucion... gracias de antemano me fuisteis de mucha ayuda antes :)

Neftali [Germán.Estévez] 28-06-2007 13:11:09

Cita:

Empezado por Rako
...llame al antiguo programador y me dijo que hay que cargar todos los pacientes al arrancar el programa irremediablamente y la culpa de la lentitud es delphi me dijo

Creo que la culpa es suya, no de Delphi.
¿Cual es la razón para leer TODOS los pacientes al cargar la aplicación?

Rako 28-06-2007 16:12:03

pues no se... supongo que para tenerlos ya ahi cargaditos e ir pudiendo pasar de uno a otro jaja
ya habia pensado quitar eso e irlos cargando segun los busquen por nombre o algo asi,,, supongo que acabare haciendo eso


La franja horaria es GMT +2. Ahora son las 18:14:02.

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