Boa tarde Galera!
Preciso de uma ajuda de vocês que são mais experientes. Estou com um problema de otimização.
Situação: Tenho na base de 3000 questões cadastradas em um baco de questões que preciso entregar para uma fila de revisores. mas com o código que fiz está muito lento. Não manjo muito de php.
session_start();
include_once '../../scripts/conexao.php';
$query = "SELECT id, idAtividadeAcademica FROM questoes WHERE situacao = 1 ORDER BY idAtividadeAcademica";
$result = mysqli_query($link, $query);
while ($questoes = mysqli_fetch_assoc($result)) {
$query = "SELECT idProfessor FROM revisores_tecnicos WHERE idAtividadeAcademica = {$questoes['idAtividadeAcademica']} AND fila = 0";
$result1 = mysqli_query($link, $query);
$qtdRevisores = mysqli_num_rows($result1);
$revisores = mysqli_fetch_assoc($result1);
if($qtdRevisores < 2){
$query = "UPDATE revisores_tecnicos SET fila = 0 WHERE idAtividadeAcademica = {$questoes['idAtividadeAcademica']}";
}else {
$query = "UPDATE revisores_tecnicos SET fila = 1 WHERE idProfessor = {$revisores['idProfessor']} AND idAtividadeAcademica = {$questoes['idAtividadeAcademica']}";
}
$result1 = mysqli_query($link, $query);
$query = "UPDATE questoes SET idRevisor = {$revisores['idProfessor']}, situacao = 2 WHERE id = {$questoes['id']}";
$result1 = mysqli_query($link, $query);
}
UPDATE revisores_tecnicos rt, (
SELECT DISTINCT a.idAtividadeAcademica, b.idProfessor
FROM questoes a
INNER JOIN revisores_tecnicos b
ON a.idAtividadeAcademica = b.idAtividadeAcademica
WHERE a.situacao = 1 AND b.fila = 0
) t SET rt.fila = 1
WHERE rt.idProfessor = t.idProfessor
AND rt.idAtividadeAcademica = t.idAtividadeAcademica;
Primeiro rode essa subquery dentro do update pra ver se o resultado é parecido com o que vc estava tentando fazer pelo php, se estiver certo é só verificar se bate com a revisores tecnicos que vc quer alterar, lembrando que apenas te mostrei o exemplo seguindo o else dentro do while que vc fez, o if vc se vira