![]() |
MySql y Delphi Lento
Estoy migrando una aplicacion hecha en Delphi 4 y Paradox que utiliza como componente de enlace a la base de datos el BDE, la migracion se esta haciendo a Delphi 6 y MySQL, el problema radica en que las consultas u otras cosas que tengan que ver con tablas, querys en Paradox corre bien a buena velocidad de acceso (un poco lento pero se puede trabajar), pero no asi en Delphi 6 y MySQL, ya que las consultas a la misma tabla tardas mucho en MySQL (no se puede trabajar asi con tanta lentitud) al final parece que resulta peor... bueno mi pregunta es... alguien sabe por que esta pasando esa lentitud en las consultas en MySQL? estoy utlizando un componente de paga que se llama MySQLDAC.... sera dicho componente?? he probado el Zeos Access y de igual forma me resulta lento, algun consejo? :( gracias!! :D
|
No es logico lo que dices, pero ayudaria que pusieras algun ejemplo de query que estes corriendo en uno y otro y por otra parte que comentaras en que consiste esa migración.
MySQL dispone de herramientas de importación mucho muy rápidas que se pueden aprovechar para estos casos. |
Algo a tener en cuenta, es que mientras con paradox uno está acostumbrado a trabajar con tablas como un todo (componente Table), en MySQL (y cualquier servidor SQL) esto no es recomendable porque es muy costoso en tiempo y recursos, traer todos los registros desde el servidor. Por eso, la filosofía cambia y es mejor trabajar con consultas SQL con condiciones adecuadas para restringir los registros que se envian al cliente.
Dicho llanamente; si estamos buscando un cliente de apellido CORCUERA, en paradox quizá haríamos: Código:
tblClientes.Filtered := true; Código:
select * from clientes Otro aspecto a tener en cuenta para las velocidades, son los índices. Índices adecuados pueden ser la diferencia entre horas y segundos para una consulta. // Saludos |
Cita:
Saludos....!!!:D |
Cita:
Saludos....!!! |
Ahí está el punto. Desafortunadamente las personas que están acostumbradas a trabajar con sistemas tipo paradox o access, piensan que necesitan tener a la vista todos esos datos, les da una falsa sensación de seguridad. Pero basta meditarlo un poco para percatarse de que nadie necesita tener esa cantidad de registros a la mano, nadie realmente va a revisar 120,000 registros para buscar uno en particular. Por lo general, simplemente desplazarán rápidamente el grid- que estará convenienemente ordenado -hasta llegar a la zona donde piensan que puede estar el dato que buscan. Una vez en esa zona, revisarán- ahí sí con detalle -unos cuantos registros (cien o doscientos a lo sumo). Ahora, ¿cómo identifican esa zona de probabilidad? Necesariamente es porque conocen algún dato, o parte de algún dato, y el orden de los registros les ayuda a llegar a la zona. Pero eso mismo es entonces lo que requieres para hacer una consulta SQL adecuada. El ejemplo del apellido está sobre simplificado, pero ilustra el concepto. En lugar de desplazarse por entre 120,000 registros hasta la zona de las C's (porque recuerdan que el apellido que buscan es CORCUERA), lo que harán será escribir "CORCUERA" en un cuadro de edición, oprimir un botón y esperar a que el servidor les regrese los clientes de apellido CORCUERA.
En resumen, para encontrar un registro entre 120,000, el cliente debe saber algo acerca del registro, es imposible que revise todos y cada uno de ellos. Ese algo es el parámetro que pasas a tu consulta SQL. Algo que puedes hacer, es darle ambas opciones: el despliegue total y la búsqueda según criterios. Pronto se convencerá que la búsqueda es mucho más efectiva, sobre todo si la haces versátil. De un recorrido lineal de 120,000 registros, les das ahora un cuadro de búsqueda donde pueden pedir "todos los clientes cuyo apellido paterno empiece con COR, su nombre contenga MARIO y que vivan en una calle cuyo nombre contiene SURG, es decir, algo que ni siquiera esperaban que podían hacer. // Saludos |
Antes que todo una disculpa por ser algo descortes y no darles las gracias... gracias por contestar a TODOS.
Tienes mucha razon, la gente esta mal acostumbrada, y eso que planteas esta en el sistema anterios, el cliente presiona el boton y se le presenta otra ventana la cual despliega las cuentas y busquedas filtradas, como lo comentaste, ahora lo que voy a "tratar" es acostumbrar a los usuarios a solo hacer las busquedas filtradas, sin datos en el grid, y dependiendo lo que quieran buscar les irá apareciendo en el grid, estoy en lo cierto no? muchas graciass por todo colega... {Saludos}:D |
La franja horaria es GMT +2. Ahora son las 06:19:52. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi