Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-10-2006
JCarlosas JCarlosas is offline
Miembro
 
Registrado: abr 2006
Ubicación: Habana. Cuba
Posts: 103
Poder: 19
JCarlosas Va por buen camino
Comportamiento misterioso de MySQL

Hola saludos a todos los foristas.

Tengo el siguiente problema que no alcanzo a entender y mucho menos a resolver por el momento.

Tengo una tabla que posee un campo IDMovil que es Texto, un Campo fecha de tipo DateTime y otros cuantos campos mas en dicha tabla.
EStoy usando Delphi 2006 con Zeoslib 6.5, aunque no creo que esto sea muy relevante.
Dentro de un procedimiento Delphi realizo varias consultas del tipo Select a dicha tabla.
Cuando ejecuto dicho procedimiento de consulta por primera vez para IDMovil=Movil1 y para un rango de fechas por ejemplo la ejecucion del procedimiento demora aproximadamente 42 segundos. Sin embargo cuando realizo despues esa misma operacion por 2, 3 .... vez, se me demora entonces solo 2 a 3 segundos.
Puedo incluso reiniciar mi programa que sigue demorandose 2 o 3 segundos. Esto es asi hasta que renicio el servidor de MySQL donde entonces la primera vez que realizo la consulta se me vuelve a demorar unos 42 segundos.

Alguien tiene idea de que puedo hacer para que desde el inico la consulta solo demore 2 a 3 segundos.

Saludos a todos
JCarlos
Responder Con Cita
  #2  
Antiguo 06-10-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Desde luego parecen mucho 42 segundos... ahora que, puede que tenga algo que ver con el caché (siempre el caché) en que pueda guardar MySQL los resultados de esa consulta, por ejemplo y, acaso, particularmente, por ser "tan pesada".

Eso explicaría porqué sucesivas ejecuciones de la consulta son más rápidas. ¿No puedes copiar por aquí la consulta SQL tal y como la llevas a cabo? A lo mejor a partir de ahí es posible que alguien pueda echarte una mano.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 09-10-2006
JCarlosas JCarlosas is offline
Miembro
 
Registrado: abr 2006
Ubicación: Habana. Cuba
Posts: 103
Poder: 19
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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Comportamiento de bde con oracle 10 g opsi Conexión con bases de datos 4 27-09-2006 22:32:47
Comportamiento de indices Osorio Firebird e Interbase 4 16-06-2006 16:08:36
muy misterioso problema al imprimir quickreport manolop Impresión 0 30-05-2005 17:47:16
Comportamiento de los Packages unicode OOP 2 07-09-2003 18:22:38
Comportamiento extraño de cds con dbExpress mosorio Varios 0 01-09-2003 17:11:38


La franja horaria es GMT +2. Ahora son las 03:12:48.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi