Bonjour,
je suis confronté à un problème un peu génant. Je viens de terminer une application de callcenter pour un client. Le but est d'importer des listes de clients depuis un CSV vers une base de donnée.
Les CSV peuvent être très grand (30 000 -50 000 lignes). L'importation et la suppression des listes se fait de manière rapide et correcte lorsque nous avons à faire à de petits fichiers. Si le fichier excède les 10 000 lignes le temps devient beaucoup trop long.
Il se peut donc que le code soit mal optimisé mais apèrs avoir tout bien revérifier, je ne pense pas que se soit ca.
Le sytème que j'utilise pour l'impotation est le suivant:
J'utilise des objets appelés "bean" contenant des méthodes get set afin de sauvegarder un enregistrement. Je fais des boucles et charge ces bean pour chaque champs.
Je les places ensuite sur la session et les récupères plus tard pour l'insertion.
Ce qui est vraiement bizzare; c'est la suppression de la liste qui prend un temps énorme (presque 1 heure![]()
-> si elle est de petite taille c'est presque instantané). Pourtant voici le petit bout de code qui prend autant de temps:
Tout devrait se passer rapidement, je ne vois pas quel est le pb, y a t'il qqc à réglé dans mysql??
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 function supprimeListe($pk_liste){ $sql = 'select PK_CLIENT from T_CLIENT where PK_LISTE='.$pk_liste; $req = mysql_query($sql) or die('<p class="standard">Erreur SQL : <br />'.$sql.'</p>'); while($data = mysql_fetch_assoc($req)){ $sql2 = 'delete from T_ASSURANCE where PK_CLIENT='.$data['PK_CLIENT']; $req2 = mysql_query($sql2) or die('<p class="standard">Erreur SQL : <br />'.$sql.'</p>'); $sql2 = 'delete from T_RDV where PK_CLIENT='.$data['PK_CLIENT']; $req2 = mysql_query($sql2) or die('<p class="standard">Erreur SQL : <br />'.$sql.'</p>'); $sql2 = 'delete from T_CHAMP where PK_CLIENT='.$data['PK_CLIENT']; $req2 = mysql_query($sql2) or die('<p class="standard">Erreur SQL : <br />'.$sql.'</p>'); } $sql = 'delete from T_CLIENT where PK_LISTE='.$pk_liste; $req = mysql_query($sql) or die('<p class="standard">Erreur SQL : <br />'.$sql.'</p>'); $sql = 'delete from T_LISTE where PK_LISTE='.$pk_liste; $req = mysql_query($sql) or die('<p class="standard">Erreur SQL : <br />'.$sql.'</p>'); $sql = 'delete from T_LIAISON_CAMP_LISTE where PK_LISTE='.$pk_liste; $req = mysql_query($sql) or die('<p class="standard">Erreur SQL : <br />'.$sql.'</p>'); }
Si qqu peut m'aider, je vous remercie.
Merci de m'avoir lu jusqu'au bout
@+
Partager