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