Cita:
Empezado por Kipow
Bueno les quiero comentar algo que me paso y me hizo quebrarme la cabeza, hasta que di con el punto.
Tenia 2 consultas generadas en 2 bases de datos identicas, en la primera demoraba 30seg y en la segunda 3ms,
revisando las estrucuras y la informacion de ambas eran identicas
Luego utilizando el IB PLANalyzer pude constatar que no estaba utlizando el mismo PLAN en ambas consulta, porque?
Mi solucion fue colocarle manualmente el PLAN a la consulta mas tardada y listo, pero esto me deja en que pensar porque puede ser que en algunas instalaciones que he realizado del mismo sistema, pueda tener este tipo de problemas.
Alguien sabe porque pasa esto?
Saludos
|
Efectivamente, para bases de datos iguales, pueden variar los planes.
Son varios los factores que firebird tiene en cuenta, los índices, las estadísticas de los índices implicados, incluso la cantidad de campos a devolver o el número de registros en la tabla.
Me he encontrado, a veces, con casos "inexplicables", como relatas, y con IBplanAnalizer (estupenda herramienta) he pasado horas buscando el motivo de que en una base de datos tarde una consulta 1 segundo y al día siguiente tarde 20 minutos.
Normalmente se soluciona haciendo la consulta de otra manera, poniendo antes un inner join que otro, pidiendo unos campos antes o después que otros, etc.
Otras veces, la mayoría, basta con añadir un índice nuevo y todo vuelve a la normalidad.
En fin, se trata de "afinar" al máximo, cuantos más tablas, más datos, consultas más "grandes", etc es necesario afinar más.