consultas con odbc a mysql lento desde foxpro

514 views
Skip to first unread message

Josue Rivas

unread,
Jan 13, 2014, 6:14:02 PM1/13/14
to publice...@googlegroups.com
tengan muy buenas tardes.

quiero informarles que tengo una base de datos en mysql y en la cual tengo una tabla de productos con 85,500 registro cuando estoy consultado desde el MySQL Workbench la consulta se ejecuta rápidamente en 5 segundo en cambio cuando estoy consultando la misma tabla con los mismo parámetros  desde mi aplicación en fox 9 se tarda casi el minuto estoy utilizando el connector mysql 5.1 y no se que pueda estar pasando por favor alguien que me pueda ayudar lo agradeceré mucho 

HDA HDA54

unread,
Jan 14, 2014, 3:13:35 PM1/14/14
to publice...@googlegroups.com
Hola, Me pasó una vez con varios registros mas, para solucionarlo implementé nuevamente el Driver Mysql 3.51 y no mas problemas. en mi opinión a vfox y Mysql se lleva mejor con el 3.51 que el 5.1, repito en mi humilde opinión. hacé la prueba. Saludos

Richard Gaviria

unread,
Jan 14, 2014, 3:45:10 PM1/14/14
to publice...@googlegroups.com
No solo es tu humilde opinión, en verdad el 3.51 es muchísimo más fácil hasta para instalar sin usar el instalador de odbc.

Saludos

Rick.



Date: Tue, 14 Jan 2014 18:13:35 -0200
Subject: Re: [vfp] consultas con odbc a mysql lento desde foxpro
From: hda...@gmail.com
To: publice...@googlegroups.com

David Salazar

unread,
Jan 14, 2014, 6:45:25 PM1/14/14
to publice...@googlegroups.com
Comparto la opinion de HDA HD54 prueba con el driver Mysql 3.51.


2014/1/14 HDA HDA54 <hda...@gmail.com>

almonts ( www.ontarioxb.es )

unread,
Jan 14, 2014, 7:34:37 PM1/14/14
to publice...@googlegroups.com
No es problema del driver ODBC.
Podrias postear la consulta, si es en varias tablas o solo en una y los indices que utilizan las tablas?. Gracias

Josue Rivas

unread,
Jan 15, 2014, 10:33:11 AM1/15/14
to publice...@googlegroups.com
CREATE TABLE `tinv_productos` (
`cpro_empresa` INT(11) NOT NULL,
`cpro_codigo` VARCHAR(20) NULL DEFAULT NULL,
`cpro_nombre` TEXT NULL,
`cpro_fecha` DATE NULL DEFAULT NULL,
`cpro_grupo` VARCHAR(10) NULL DEFAULT NULL,
`cpro_sgrupo` VARCHAR(10) NULL DEFAULT NULL,
`cpro_ssgrupo` VARCHAR(10) NULL DEFAULT NULL,
`cpro_agrupacion` VARCHAR(8) NULL DEFAULT NULL,
`cpro_ancho` DECIMAL(16,6) NULL DEFAULT NULL,
`cpro_uni_ancho` VARCHAR(3) NULL DEFAULT NULL,
`cpro_largo` DECIMAL(16,6) NULL DEFAULT NULL,
`cpro_uni_largo` VARCHAR(3) NULL DEFAULT NULL,
`cpro_peso` DECIMAL(16,6) NULL DEFAULT NULL,
`cpro_uni_peso` VARCHAR(3) NULL DEFAULT NULL,
`cpro_area` DECIMAL(16,6) NULL DEFAULT NULL,
`cpro_uni_area` VARCHAR(3) NULL DEFAULT NULL,
`cpro_metros` DECIMAL(16,6) NULL DEFAULT NULL,
`cpro_num_op` VARCHAR(10) NULL DEFAULT NULL,
`cpro_proveedor` VARCHAR(10) NULL DEFAULT NULL,
`cpro_codigo_padre` VARCHAR(20) NULL DEFAULT NULL,
`cpro_marca` VARCHAR(10) NULL DEFAULT NULL,
`cpro_descripcion` LONGTEXT NULL,
`cpro_especificacion` LONGTEXT NULL,
`cpro_presentacion` VARCHAR(10) NULL DEFAULT NULL,
`cpro_serie` VARCHAR(50) NULL DEFAULT NULL,
`cpro_ncompra` VARCHAR(10) NULL DEFAULT NULL,
`cpro_id_fabricante` VARCHAR(50) NULL DEFAULT NULL,
`cpro_registro` DATETIME NULL DEFAULT NULL,
`cpro_ubicacion` VARCHAR(10) NULL DEFAULT NULL,
`cpro_materia_prima` INT(1) NULL DEFAULT NULL,
`cpro_cambio` INT(11) NULL DEFAULT NULL,
`cpro_retaceo` VARCHAR(20) NULL DEFAULT NULL,
`ctmp_presentacion` VARCHAR(2) NULL DEFAULT NULL,
`ctmp_grupo` VARCHAR(2) NULL DEFAULT NULL,
`ctmp_subgrupo` VARCHAR(3) NULL DEFAULT NULL,
`ctmp_subsubgrupo` VARCHAR(3) NULL DEFAULT NULL,
`ctmp_marca` VARCHAR(5) NULL DEFAULT NULL,
`ctmp_materia` INT(1) NULL DEFAULT NULL,
INDEX `IND_NUMERO` (`cpro_empresa`, `cpro_codigo`),
INDEX `cpro_agrupacion` (`cpro_agrupacion`),
INDEX `cpro_num_op` (`cpro_num_op`),
INDEX `ctmp_subsubgrupo` (`ctmp_subsubgrupo`),
INDEX `cpro_empresa` (`cpro_empresa`)
)
COMMENT='registro de productos y materias primas'
COLLATE='utf8_general_ci'
ENGINE=MyISAM;


El 14 de enero de 2014, 18:34, almonts ( www.ontarioxb.es ) <alm...@gmail.com> escribió:
No es problema del driver ODBC.
Podrias postear la consulta, si es en varias tablas o solo en una y los indices que utilizan las tablas?. Gracias




--
Atentamente:

Josue Rivas

Josue Rivas

unread,
Jan 15, 2014, 10:33:49 AM1/15/14
to publice...@googlegroups.com
y la consulta es :
select * from tinv_productos  where cpro_empresa = 1
--
Atentamente:

Josue Rivas

almonts ( www.ontarioxb.es )

unread,
Jan 15, 2014, 12:14:51 PM1/15/14
to publice...@googlegroups.com
Veo que no tienes un Indice PRIMARY o UNIQUE. Podrias tener registros duplicados

Ejecuta la consulta forzando el indice a utilizar y me comentas:

SELECT * FROM TINV FORCE INDEX(cpro_empresa) WHERE cpro_empresa = 1

Saludos :)


MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Jan 15, 2014, 12:39:51 PM1/15/14
to publice...@googlegroups.com
Hola para que aceleres tu consulta solo tienes que crear indexes primarios y foráneos, ademas a ello tienes que crear procedimiento, tienes que tomar solo los resultados que necesitas osea tienes que aplicar filtros porque no necesariamente tienes que mostrar todos los datos al usuario.



Saludos; 


Ing. Russvell Jesus Soto Gamarra 
Framework Multi-conexion v6.0 a cualquier base de datos 

Alejandro Isla

unread,
Jan 15, 2014, 1:34:18 PM1/15/14
to publice...@googlegroups.com
En el SQLSTRINGCONNECT de la conexion a la base MYSQL, que le pones en OPTIONS.

¿La base es local o remota? porque 5 segundos para 85.000 registros no es rápido si estas trabajando en una LAN.

Saludos.

Josue Rivas

unread,
Jan 15, 2014, 2:48:21 PM1/15/14
to publice...@googlegroups.com
muchas gracias a todos por su ayuda 

--
Atentamente:

Josue Rivas

Josue Rivas

unread,
Jan 15, 2014, 2:49:49 PM1/15/14
to publice...@googlegroups.com
gracias alejandro fíjate que estoy en una LAN y no he colocado option en la cadena de coneccion


El 15 de enero de 2014, 12:34, Alejandro Isla <agi...@gmail.com> escribió:



--
Atentamente:

Josue Rivas

Alejandro Isla

unread,
Jan 15, 2014, 10:08:31 PM1/15/14
to publice...@googlegroups.com
Cada entorno es particular, por eso me extraño, no se la carga de tu red o tu servidor, pero con una base de la mitad de tamaño (unos 45.000 registro) el workbench me hace la búsqueda en 0.6 segundos.

Fijate si le pones ;OPTIONS=2048

eso te activa la compresión de datos antes de enviarlos, te concume más cpu pero te libera la red. Según tu config, puede beneficiar.

Yo estoy trabajando con win7 x32, y los driver 5.2 y consultas con subquery la hace normal.

Saludos.

Alejandro Isla

unread,
Jan 15, 2014, 10:10:40 PM1/15/14
to publice...@googlegroups.com
Nunca biene mal, hace un explain del select que usas y copianos el resultado que te da.

Alejandro


El lunes, 13 de enero de 2014 20:14:02 UTC-3, Josue Rivas escribió:
Reply all
Reply to author
Forward
0 new messages