Ver Mensaje Individual
  #14  
Antiguo 17-07-2007
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Reputación: 22
Mick Va por buen camino
Cita:
Empezado por capo979
lo que anda lento parece ser es que tengo dentro del for una consulta asi

select max(id) from tabla where (estab = :estab) and (doc = :doc)
into :maxid;

el problema es con el max me parece

que me pueden decir
Por lo ultimo que explicas a mi parecer todo va rapido solo 10 segundos, estas ejecutando un select por cada registro de la sentencia inicial, eso si el sistema, no escalará bien, cuantos mas registros mas selects a realizar y mucho mas lento.

De todas formas es probable que lo puedas acelerar mas: ¿ seguro que tienes creado un indice "DESCENDENTE" para el campo ID de la tabla ?

Un max(ID) para que sea rapido exige un indice DESCENDENTE sobre el campo ID, no sirve la clave primaria ni un indice normal ascendente (estos solo valen para acelerar la funcion MIN).

Asegurate de usar el ibconsole o cualquier otro programa para probar las queries y mirar el tiempo que tardan y el PLAN que se genera para saber si se esta usando algun indice si pone PLAN (TABLA NATURAL) malo malo, no hay ningun indice que se pueda usar para acelerar la consulta.

Saludos
Responder Con Cita