Hola Maria,
Claro, en la operación Administrar Optativas de una Actividad Genérica no usa el parámetro pro_ver_optativas_en_estructura_plan, ya que es esta operación es donde se administra por lo tanto se deben listar todas las optativas. En las operaciones de Administrar Planes de Estudio y Reporte de Plan de Estudios de un Alumno si se hace el uso del parámetro, ¿estas dos operaciones las notas lentas también?
Proba ejecutar la siguiente query:
SELECT generica.elemento as materia_generica,
rev_padre.elemento_revision as revision_materia_generica,
generica.codigo as codigo_materia_generica,
generica.entidad as entidad_materia_generica,
generica.nombre as nombre_materia_generica,
get_regla_mensaje(rev_padre.regla, rev_padre.parametros) as forma_cumplimiento,
creditos_padre.nombre as origen_credito,
sga_elementos_comp.puntaje as puntaje_materia_optativa,
sga_elementos_comp.orden,
sga_elementos_estados.descripcion as desc_estado_materia_optativa,
optativa.codigo as codigo_materia_optativa,
optativa.entidad as entidad_materia_optativa,
rev_hijo.elemento_revision as revision_materia_optativa,
sga_g3entidades_subtipos.nombre as optativa_tipo,
optativa.nombre as nombre_materia_optativa,
'S' as optativa_confirmada
FROM sga_elementos as generica,
sga_elementos_revision as rev_padre
LEFT JOIN sga_reglas as regla_padre ON rev_padre.regla = regla_padre.regla,
sga_elementos_origen_creditos as creditos_padre,
sga_elementos_comp,
sga_elementos_estados,
sga_elementos as optativa,
sga_g3entidades_subtipos,
sga_elementos_revision as rev_hijo
WHERE rev_padre.elemento = generica.elemento
AND generica.entidad_subtipo = 2
AND rev_padre.origen_creditos = creditos_padre.origen_creditos
AND sga_elementos_comp.elemento_padre = rev_padre.elemento_revision
AND sga_elementos_comp.elemento_hijo = rev_hijo.elemento_revision
AND optativa.elemento = rev_hijo.elemento
AND optativa.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo
AND optativa.estado = sga_elementos_estados.estado
AND generica.elemento = <GENERICA>
ORDER BY generica.nombre,
sga_elementos_comp.orden
;
Reemplaza por el id de la materia genérica.
¿cuanto tarda dicha query?
También ejecuta el EXPLAIN ANALYZE de la misma query y pasanos los resultados:
EXPLAIN ANALYZE SELECT generica.elemento as materia_generica,
rev_padre.elemento_revision as revision_materia_generica,
generica.codigo as codigo_materia_generica,
generica.entidad as entidad_materia_generica,
generica.nombre as nombre_materia_generica,
get_regla_mensaje(rev_padre.regla, rev_padre.parametros) as forma_cumplimiento,
creditos_padre.nombre as origen_credito,
sga_elementos_comp.puntaje as puntaje_materia_optativa,
sga_elementos_comp.orden,
sga_elementos_estados.descripcion as desc_estado_materia_optativa,
optativa.codigo as codigo_materia_optativa,
optativa.entidad as entidad_materia_optativa,
rev_hijo.elemento_revision as revision_materia_optativa,
sga_g3entidades_subtipos.nombre as optativa_tipo,
optativa.nombre as nombre_materia_optativa,
'S' as optativa_confirmada
FROM sga_elementos as generica,
sga_elementos_revision as rev_padre
LEFT JOIN sga_reglas as regla_padre ON rev_padre.regla = regla_padre.regla,
sga_elementos_origen_creditos as creditos_padre,
sga_elementos_comp,
sga_elementos_estados,
sga_elementos as optativa,
sga_g3entidades_subtipos,
sga_elementos_revision as rev_hijo
WHERE rev_padre.elemento = generica.elemento
AND generica.entidad_subtipo = 2
AND rev_padre.origen_creditos = creditos_padre.origen_creditos
AND sga_elementos_comp.elemento_padre = rev_padre.elemento_revision
AND sga_elementos_comp.elemento_hijo = rev_hijo.elemento_revision
AND optativa.elemento = rev_hijo.elemento
AND optativa.entidad_subtipo = sga_g3entidades_subtipos.entidad_subtipo
AND optativa.estado = sga_elementos_estados.estado
AND generica.elemento = <GENERICA>
ORDER BY generica.nombre,
sga_elementos_comp.orden
;
saludos.
2