Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2006, 17h01   #1
Membre régulier
 
Homme Joseph Cachico
Chef de projet en SSII
Inscription : mai 2005
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Joseph Cachico
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII

Informations forums :
Inscription : mai 2005
Messages : 109
Points : 73
Points : 73
Par défaut Un enorme update

Bonjour à tous,

J'ai une table de 70000 lignes (environ)
Je dois effectuer un update global du type ci dessous et ce grace à un fichier qui contient les 70000 update:
Code :
1
2
3
4
5
 
UPDATE maTable SET champ1=toto,champs2=titi WHERE clef=1
UPDATE maTable SET champ1=tutu,champs2=tete WHERE clef=2
UPDATE maTable SET champ1=tata,champs2=tyty WHERE clef=3
...
Il y a un index sur ma clef et malgré tout cela me prend un temps fou.
Existe t'il un moyen de reduire le temps de traitement?

Merci d'avance
jcachico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 17h40   #2
Membre régulier
 
Inscription : juillet 2003
Messages : 83
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 83
Points : 90
Points : 90
Tu peux créer une table temporaire ayant la structure de ta table maTable en ne conservant que les colonnes à mettre à jour et l'identifiant que tu as appelé clef.
Par mysqlimport, tu peux charger très rapidement cette table temporaire
Pour accéler la mise à jour qui suivra il te faut créer un index sur le champ clef pour la table temporaire et vérifier au passage si un index existe également pour ce champ sur la table cible
En dernier lieu ne reste plus qu'à faire l'UPDATE de façon ensembliste:

UPDATE maTable T, tmp_maTable TMP
set T.champ1 = TMP.champ1,
T.champ2 = TMP.champ2
WHERE T.clef = TMP.clef
selecta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2006, 17h45   #3
Membre régulier
 
Homme Joseph Cachico
Chef de projet en SSII
Inscription : mai 2005
Messages : 109
Détails du profil
Informations personnelles :
Nom : Homme Joseph Cachico
Localisation : France

Informations professionnelles :
Activité : Chef de projet en SSII

Informations forums :
Inscription : mai 2005
Messages : 109
Points : 73
Points : 73
Merci de ta reponse je tente le coup de suite...
jcachico est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h49.


 
 
 
 
Partenaires

Hébergement Web