Ver Mensaje Individual
  #3  
Antiguo 09-10-2006
JCarlosas JCarlosas is offline
Miembro
 
Registrado: abr 2006
Ubicación: Habana. Cuba
Posts: 103
Reputación: 21
JCarlosas Va por buen camino
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

Última edición por JCarlosas fecha: 09-10-2006 a las 01:05:27.
Responder Con Cita