Gente,
les hago una consulta. En la interfaz 3W, cuando un docente (Perfil docente) desea ver la cursada de un alumno inscripto a examen, estamos teniendo una demora muy importante, hasta que muestra la cursada.
¿Que debo revisar y/o mejorar para que este tiempo disminuya? Recibimos varias quejas por esta demora.
Les comento que la version actual es la 2.9.1.
Espero sus respuestas.
Marcela, cual es la operacion desde donde quieren ver la cursada?
¿Podes adjuntar una captura de pantalla?
Fijate la consulta que esta en \src\siu\modelo\datos\db\alumno.php, funcion get_datos_ultima_cursada_materia
Probá correrla desde el sqleditor con los datos de alguno de esos alumnos y fijate si podes detectar si es esa la query que esta tardando en recuperar la información.
Alejandro,
adjunto la pantalla, que indica “cargando” durante mas de tres minutos…
La opción están el perfil docente web, en exámenes, inscripciones a examen, cuando uno selecciona una mesa, y luego selecciona Ver Cursada de un alumno-
Cuando corre la misma consulta desde el SQL editor, tambien, demora muchisimo… mas de 3 minutos.
¿Que debo revisar? Esa es la consulta que me indicaste que correr:
SELECT FIRST 1
sga_comisiones.anio_academico as anio_academico,
sga_comisiones.periodo_lectivo as periodo_lectivo,
to_char(sga_cursadas.fecha_regularidad, ‘%d/%m/%Y’) as sfecha_regularidad,
NVL(to_char(sga_cursadas.fin_vigencia_regul, ‘%d/%m/%Y’), ‘Sin Vencimiento’) as sfecha_fin_vigencia,
CASE
WHEN sga_cursadas.fin_vigencia_regul IS NULL THEN 1
WHEN sga_cursadas.fin_vigencia_regul IS NOT NULL AND sga_cursadas.fin_vigencia_regul >= TODAY THEN 1
ELSE 0
END as es_vigente,
sga_cursadas.comision,
sga_comisiones.nombre as comision_nombre,
sga_comisiones.catedra as catedra,
sga_cursadas.nota,
sga_det_escala.descripcion as nota_descripcion,
sga_det_escala.concepto as nota_concepto,
DECODE(sga_cursadas.resultado, ‘P’, ‘Aprobado’, ‘A’,‘Aprobado’, ‘R’, ‘Reprobado’, ‘U’,‘Libre’) as resultado_desc,
DECODE(sga_cursadas.origen, ‘P’, ‘Promocion’, ‘C’, ‘Cursada’, ‘E’, ‘Equivalencia’, ‘EE’, ‘Equivalencia en otra Carrera’, ‘CE’, ‘Cusada en otra carrera’) as origen,
sga_cursadas.plan as plan,
sga_cursadas.fecha_regularidad as fecha_regularidad
FROM sga_cursadas
LEFT JOIN sga_comisiones ON sga_comisiones.comision = sga_cursadas.comision
LEFT JOIN sga_det_escala ON (sga_det_escala.escala_notas = sga_cursadas.escala_notas AND sga_det_escala.nota = sga_cursadas.nota )
WHERE sga_cursadas.unidad_academica = ‘…’
AND sga_cursadas.carrera = ‘V’
AND sga_cursadas.legajo = ‘…’
AND sga_cursadas.materia = ‘…’
ORDER BY sga_cursadas.fecha_regularidad desc
Fijate primero si lo que tarda es la consulta en la vista de cursadas:
SELECT * FROM vw_cursadas
WHERE sga_cursadas.unidad_academica = '… ’
AND sga_cursadas.carrera = ‘V’
AND sga_cursadas.legajo = ‘…’
AND sga_cursadas.materia = ‘…’
¿Corren periódicamente el UPDATE STATISTICS? Aqui hay un mensaje por este tema y el adjunto de un sql para que lo corras y genere las sentencias del update statistics sobre las tablas para luego correrlo en la base.
Alejandro,
la consulta sobre la vista sga_cursadas no demora nada…
Lo que demora son los left join, los saque y coloque todo en el from y where y anduvo VOLANDO… NADA QUE VER.
Te comento que periodicamente se corren los US sobre las BD.
Por que los left join pueden demorar tanto??
Saludos
Si, no se porque en algunos casos los LEFT JOIN funcionan lento a diferencia del OUTER. En algun momento me paso lo mismo pero no pude detectar a que se debia ese problema.
Por favor cambia los LEFT JOIN por la sentencia OUTER (lo que esta en negrita):
FROM sga_cursadas
[b] LEFT JOIN sga_comisiones ON sga_comisiones.comision = sga_cursadas.comision
LEFT JOIN sga_det_escala ON (sga_det_escala.escala_notas = sga_cursadas.escala_notas AND sga_det_escala.nota = sga_cursadas.nota ) [/b]
por:
FROM sga_cursadas,
OUTER sga_comisiones,
OUTER sga_det_escala
WHERE sga_cursadas.unidad_academica = ‘…’
AND sga_cursadas.carrera = ‘V’
AND sga_cursadas.legajo = ‘…’
AND sga_cursadas.materia = ‘…’ AND sga_comisiones.comision = sga_cursadas.comision
AND sga_det_escala.escala_notas = sga_cursadas.escala_notas
AND sga_det_escala.nota = sga_cursadas.nota
Veremos de reemplazar los LEFT JOIN que haya por el OUTER de informix.