8768 sujets

Développement web côté serveur, CMS

Bonjour,

j'ai créé un application web et je rencontre un problème !

dans ma base de donnée j'ai 3 tables
-table 1 (cette table provient d'une autre application, je n'ai pas la main sur la structure et les données)
-table 2 (cette table me permet de travailler les données de table 1 en ajoutant de l'info table1.dossier = table2.dossier
-table 3 (cette table est une table d'archive qui contient une sauvegarde de l'ancienne version de la table 1)

Donc dans mon application, je dois mettre à jour la table 1 tout les 3 jours, pour ce faire j'ai une interface qui upload un fichier csv voici la procédure
-je vide table 3
-je transfert table 1 vers table 3
-je vide table 1
-j'importe les données via mon fichier csv
LOAD DATA LOCAL INFILE ? INTO TABLE ftth_optimum CHARACTER SET 'LATIN1' FIELDS TERMINATED BY ';' ENCLOSED BY '\"' ESCAPED BY '\\'' LINES TERMINATED BY '\r\n' IGNORE 1 LINES

-je vais chercher tout ce que j'ai dans ma table 1 et je compare si dossier t1 = dossier t2, si ce n'est pas le cas, je crée le dossier dans table 2 et si c'est le cas, je mets à jour le dossier en question dans table 2
$optimum = $this->FtthOptimum->all();
                    $count = $this->FtthOptimum->count();
                    for($i = 0; $i <= $count->count; $i++){
                        $capecom = $this->FtthOptimumCapecom->find($optimum[$i]->dossier);
                        if($optimum[$i]->dossier === $capecom->dossier){
                            if($optimum[$i]->etat_negociation != $capecom->etat_nego){
                                $this->FtthOptimumCapecom->update($optimum[$i]->dossier, [
                                    "etat_nego" => $optimum[$i]->etat_negociation
                                ]);
                            }
                        }else{
                            $this->FtthOptimumCapecom->create([
                                "dossier"     => $optimum[$i]->dossier,
                                "etat_nego"   => $optimum[$i]->etat_negociation
                            ]);
                        }
                    }

se code fonctionne bien en local, après le traitement je renvoie sur une page succes !
Le problème côté serveur, c'est que la table 1 contient environ 20 000 lignes du coup si tout va bien à la fin du traitement j'ai une page blanche ???
sinon page blanche, lorsque j'ouvre le debogger de chrome, je m'aperçois qu'il y a un time out sql

Je me suis aperçu que j'avais des problèmes dans mes requetes, j'avais l'habitude d'écrire LEFT JOIN, mais j'obtiens une meilleur performance avec LEFT OUTER JOIN. De plus, mes tables étaient en innodb, si je passe en MyIsam, là encore j'ai de meilleur résultat. Avez vous une idée pour optimiser mon processus pour éviter de tomber sur une page blanche?