PDA

Ver la Versión Completa : Mysql + ODBC muy lento con tablas grandes


miguelb
21-09-2004, 22:32:18
Estoy utilizando mysql y accedo desde delphi por medio del Driver MySql OBDC 3.51.9.
El problema es que cuando intento activar una tabla demora demasiado (casi 20 segundos) hasta que hace la conexion. Esta tabla tiene 35000 registros.
Si lo conecto a una tabla con menos registros funciona mas rapido.
Que es lo que se debe hacer?
Gracias
Miguel

roman
21-09-2004, 22:59:50
Que es lo que se debe hacer?


En mi opinión dos cosas:

1. No usar ODBC. La capa de abstracción intermedia que supone ODBC siempre afectará en el rendimiento. En su lugar usa componentes más ad-hoc como podrían ser ZEOS (gratuitas) o DBExpress (incluidas con Delphi). La capa de abstracción en ambos casos es muy delgada y el rendimiento es óptimo.

2. No usar componentes de tipo Table ni, en general, consultas que devuelvan tal cantidad de registros. Cuando trabajas con servidores SQL es mejor que diseñes tus consultas de manera que devuelvan pocos registros. Esto no es lo restrictivo que parece, es simplemente acostumbrarse a que uno no tiene necesidad, en realidad, de ver 35000 registros al mismo tiempo. Por ejemplo, si el usuario necesita buscar un cliente de apellido SANCHEZ, dale la opción que se traduzca en una consulta del tipo


select * from clientes where nombre like "%SANCHEZ%"


en lugar de arrojarle los 35000 clientes y obligarlo a desplazarse hasta encontrar el cliente que busca.

// Saludos

miguelb
22-09-2004, 16:03:02
Roman:

Gracias por tu opinion,
pero
a. Entiendo que si cambio a ZEOS deberia cambiar todos los controles enlazados a datos. Es asi?
b. Dbexpress no esta incluido en delphi 5, en que delphi existe?. Que cambios implicarian el utilizar DBExpress.

Yo estoy migrando una aplicacion delphi 5 con paradox a mysql, y estaba utilizando obdc.


Muchas gracias

roman
22-09-2004, 16:06:08
a. No. Las componentes ZEOS se conectan a cualquier componente DBAWare como DBEdits, DBGids, etc.

b. Supongo que a partir de Delphi 6. Pero si no tienes planeado migrar el sistema a Kylix puedes prescindir de DBExpress y utilizar Zeos. DBExpress entiendo que es útil para aplicaciones multi-plataforma.

// Saludos

miguelb
23-09-2004, 22:41:48
Antes que nada muchas gracias por tus respuestas.
Luego,
que es lo que me conviene utilizar (Zeos o DBExpress)?
Cual es mejor o mas eficiente o mas simple?
No tengo pensado migrar a Kylix pero tampoco quisiera abandonar esa posibilidad.
Entonces arranco para el lado de DBExpress?

Vuelvo a agradecerte por tu proxima respuesta,

Miguel
Argentina

roman
23-09-2004, 23:01:15
Entonces arranco para el lado de DBExpress?

Realmente mi experiencia es poca como para dar una opinión definitiva. Pero creo que usar tal o cual componente basados en una remota posibilidad de que algún día pudiera darse el caso de migrar a otra plataforma, no es una razón suficiente.

Las veces que he usado DBExpress me ha dado lata el driver de MySql. La realidad es que Borland no pone mucha atención a este tipo de bases de datos.Ya anteriormente se mencionó en los foros que hay drivers de otras compañías como Core Lab (http://www.crlab.com/) para DBExpress que funcionan mejor que el que incluye Delphi. Sin embargo son de pago y por otra parte dicha compañía también maneja componentes de acceso a MySql. Yo los he visto por encima y mi impresión es que son bastante buenos y mejores que Zeos y los puedes conseguir desde $70 dolares (y hay versiones de evaluación).

Bueno, creo que aumenté la confusión pero, como te digo, no puedo darte una opinión experta. En tu caso yo optaría por ZEOS si no quiero pagar o por Core Lab si estoy dispuesto a pagar.

// Saludos

miguelb
27-09-2004, 11:36:20
Roman:
Cuando recibi tu respuesta ya habia comenzado con algo de DbExpress, igualmente deje una consulta en este mismo foro pues tengo algunos inconvenientes con libmysql.dll.
No estoy seguro por donde seguir, por lo que quiero ir viendo ambas alternativas (DbExpress y Zeos).
Como arranco con Zeos? que debo bajar e instalar?
Desde ya muchas gracias
Miguel
Argentina

roman
27-09-2004, 15:16:00
Como arranco con Zeos? que debo bajar e instalar?


De la página de Zeos (http://www.zeoslib.net), en la sección de descargas, bajas las componentes ZEOS DBO 6.1.5 y las instalas. Con el Zip vienen las instrucciones para instalar (son muy sencillas y rápidas).

// Saludos

miguelb
28-09-2004, 17:36:21
Gracias por tus opiniones, ya estoy avanzando con Zeos Lib.

Tienen idea donde conseguir un buen tutorial (muy completo) y en castellano del uso de los componentes Zeos y de SQL?

gracias
Miguel