Procedimiento muy lento. Optimizar código
Publicado por Carlos (3 intervenciones) el 27/08/2020 05:57:27
Buen día y desde yá, muchas gracias a quién me pueda ayudar.
Estoy trabajando con PHP y MySQL, genero un reporte consolidado de notas, que va por estudiante, por matería y por periodo así:

Actualamente, tengo un codigo que funciona, pero creo que el procedimiento estpa muy pesado por lo cual el reporte se demora muchísimo en cargar y necesito optimizar ese código. En los reportes de 36 estudiantes y 15 materias, se demora una eternidad. Alguién me puede dar una idea. Gracias.
Este es el código que tengo:
Y esa última consulta se repite para cada periodo, son 4 períodos. El proceso no es optimo. Muchas gracias por su tiempo. Como pueden ver, tomo a cada estudiante, dentro de cada estudiante, tomo cada asignatura y dentro de cada asignatura hago 4 consultas a cada período. :(
Hay una tabla para estudiantes, una para asignaturas y otra para las notas por período. De nuevo gracias.
Estoy trabajando con PHP y MySQL, genero un reporte consolidado de notas, que va por estudiante, por matería y por periodo así:

Actualamente, tengo un codigo que funciona, pero creo que el procedimiento estpa muy pesado por lo cual el reporte se demora muchísimo en cargar y necesito optimizar ese código. En los reportes de 36 estudiantes y 15 materias, se demora una eternidad. Alguién me puede dar una idea. Gracias.
Este es el código que tengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
while($rest = $resulest->fetch_assoc())
{[
$asignatura = "SELECT DISTINCT a.ida, a.nombreacorto FROM dasigra AS d INNER JOIN asignatura AS a WHERE d.id_gra='$grado' AND a.ida=d.id_asi ORDER BY a.ida";
$resulasi = $mysqli->query($asignatura);
while($rasi = $resulasi->fetch_assoc())
{
$notaconso1 = "SELECT def, niv FROM estudiante_nota WHERE id_est='$rest[ide]' AND id_asi=$rasi[ida] AND periodo='1'";
$resulnotaconso1 = $mysqli->query($notaconso1);
$rnotaconso1 = $resulnotaconso1->fetch_assoc();
if($rnotaconso1['niv']!=NULL){
if($rnotaconso1['niv']<65){
$pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['niv'],'BR',0,'C', true);
}else{
$pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['niv'],'BR',0,'C');
}
}else{
if($rnotaconso1['def']<65){
$pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['def'],'BR',0,'C', true);
}else{
$pdf->Cell($anchodeasig/4,$altura,$rnotaconso1['def'],'BR',0,'C');
}
}
Y esa última consulta se repite para cada periodo, son 4 períodos. El proceso no es optimo. Muchas gracias por su tiempo. Como pueden ver, tomo a cada estudiante, dentro de cada estudiante, tomo cada asignatura y dentro de cada asignatura hago 4 consultas a cada período. :(
Hay una tabla para estudiantes, una para asignaturas y otra para las notas por período. De nuevo gracias.
Valora esta pregunta


0