Insertion massive MYSQL

Signaler
Messages postés
20
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
27 novembre 2009
-
Messages postés
20
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
27 novembre 2009
-
Bonjour,

Dans mon application, j'ai besoin d'insérer environ 100 000 enregistrements

J'ai fais des tests et mon script de base dont voici un exemple :

for($i=0;$i<=100000;$i++)
{
$Req = "INSERT INTO neoretis.neoretis_clients (`nom`, `prenom`, `sexe`, `portable`, `email`, `statut`, `cp`, `id_entreprise`) VALUES ( 'mon nom', 'mon prenom', '1', '00000000', 'email', 1, '13000', 58)";

mysql_query($Req);
}

je voudrais savoir si il est préferable de faire comme ça ou bien s'il faut faire :

$Req = "INSERT INTO neoretis.neoretis_clients (`nom`, `prenom`, `sexe`, `portable`, `email`, `statut`, `cp`, `id_entreprise`) VALUES ";

for($i=0;$i<=100000;$i++)
{
$Req .= "( 'mon nom', 'mon prenom', '1', '00000000', 'email', 1, '13000', 58),";


}

mysql_query(trim($Req,","));

NB : le script est directement exécuter sur le serveur unix via php cli

Merci pour votre aide.

3 réponses

Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
45
Salut,

L'insertion de 100000 données identiques

Bref, ta deuxième solution...je pense pas quelle soit si bonne que ça d'autant que dans l'esprit ça ne change rien!

Par contre, je conseillerais la boucle while car sensiblement plus rapide que for !
$i=0;
while($i<=100000) 
{ 
$Req = "INSERT INTO neoretis.neoretis_clients (`nom`, `prenom`, `sexe`, `portable`, `email`, `statut`, `cp`, `id_entreprise`) VALUES ( 'mon nom', 'mon prenom', '1', '00000000', 'email', 1, '13000', 58)"; 
mysql_query($Req); 
$i++;
}


Test du chi2
Messages postés
2381
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
29 décembre 2012
16
Alors d'une je ferai un test en mettant des timers au début et à la fin de son script. Secondo, même si je ne vois pas l'intéret d'une telle boucle je définirai tes colonnes avec une valeur par défaut et je bouclerai sur 'insert .. values()'
Mais devant une telle question, je remonterai un peu en amont sur ma réflexion sur le pourquoi du comment. surtout si ça peut t'évider de faire un tel insert et te permettre de gagner du temps.
S.
Messages postés
20
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
27 novembre 2009
1
Merci pour vos réponses,

Les enregistrements ne sont pas identiques, c'est en fait une insertion de clients pour des campagnes SMS, du coup il se peut qu'un client possède un fichier clients de plus de 10 000 enregistrements et donc chaque campagne pourrait contenir 10 000 enregistrement, d'où ma question.

Merci.