Hola.
Bueno lo que se me demora tanto la primera vez es el procedimiento Delphi que dentro tiene aproximadamente de 50 a 100 consultas.
Todos son Query.
La tabla sobre la que realizo los querys es la siguiente:
Código SQL
[-]
CREATE TABLE `rescosch` (
`ID_Trama` bigint(20) unsigned NOT NULL auto_increment,
`Fecha` date default NULL,
`IDMovil` char(6) NOT NULL,
`IDOperador` char(8) NOT NULL,
`OperationCode` varchar(6) default NULL,
`Turno` smallint(1) default NULL,
`TipoDeOperacion` varchar(6) default NULL,
`DeltaT` int(11) default NULL,
`VelocMedia` float(6,3) unsigned zerofill NOT NULL default '00.000',
`TramasAnalizadas` bigint(20) unsigned default '0',
`FechaHoraUTC` datetime default NULL,
`FechaHoraLocal` datetime default NULL,
`MotorLigado` char(1) default NULL,
`AM` char(1) default NULL,
PRIMARY KEY (`ID_Trama`),
UNIQUE KEY `ID_Trama` (`ID_Trama`),
UNIQUE KEY `Fecha` (`Fecha`,`IDMovil`,`IDOperador`,`Turno`,`OperationCode`,`TipoDeOperacion`,`AM`,`MotorLigado`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
He probrado tambien añadirle otros indices por Turno solamente o por otras combinaciones mas, pero nada a mejorado.
Los querys tienen + o - la forma siguiente, lo que varia de uno a otro son las condiciones del Where.
FECHA1, FECHA2 y CODIGODEOPERACION son los que varian de uno a otro query hasta formar las 50 o 100 consultas de forma independiente que realizo dentro de la funcion de Delphi.
Ejecuto un query para unas condiciones dadas, recojo los resultados le aplico algunas transformaciones y los guardo en un grid, despues armo el nuevo query hago la consulta, vuelvo a recoger los resultados y le vuelvo a hacer algunas transformaciones y vuelvo a guardar los resultados en otra de las columnas de un grid y asi prosigo hasta que abarco todas las opciones que fueron solicitadas. Eso al final provoca unas 100 veces realizar lo anteriormente descrito y en algunos casos mas veces.
Código SQL
[-]
SELECT `rescosch`.`IDMovil` as "Cosechadora",
`rescosch`.`Turno` as "Turno",
SUM(`rescosch`.`DeltaT`) as "DeltaT"
FROM `rescosch`
WHERE Fecha > FECHA1
and Fecha < FECHA2
and `rescosch`.`StatusOperGen`="P"
and `rescosch`.`OperationCode`=CODIGODEOPERACION
GROUP BY `rescosch`.`Turno`;'
Bueno eso es lo que hay.
Saludos de antemano a todos.
Juan Carlos