Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels 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 06/01/2012, 13h26   #1
Membre habitué
 
Avatar de Gaetch
 
Homme Gaëtan Léü
Développeur informatique
Inscription : juillet 2007
Messages : 421
Détails du profil
Informations personnelles :
Nom : Homme Gaëtan Léü
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2007
Messages : 421
Points : 120
Points : 120
Par défaut Efficacité DELETE sur plusieurs tables

Bonjour, j'ai fait une requête de type DELETE qui doit supprimer dans plusieurs tables :
Code :
1
2
3
4
5
6
7
8
9
10
11
DELETE
  f_liste,
  f_item,
  f_panier
FROM
  f_liste
  LEFT OUTER JOIN f_item ON f_liste.x_liste = f_item.x_liste AND f_liste.x_mode = f_item.x_mode
  LEFT OUTER JOIN f_panier ON f_item.x_pk = f_panier.x_pk_item
WHERE
  f_liste.x_etat = 'T'
  AND f_liste.x_tcreat < '2010-05-01 00:00:00'
Est-ce qu'en terme d'efficacité c'est mieux de la découper en 3 ?
Je travaille en MySQL 5.0
Gaetch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 15h11   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 331
Points : 18 331
Envoyer un message via MSN à CinePhil
Est-ce que la requête fonctionne ?

Si les tables sont en InnoDB et que tu veux supprimer en cascade les lignes des tables dépendantes de la première, utilise la contrainte d'intégrité ON DELETE CASCADE sur chaque clé étrangère.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2012, 16h09   #3
Membre habitué
 
Avatar de Gaetch
 
Homme Gaëtan Léü
Développeur informatique
Inscription : juillet 2007
Messages : 421
Détails du profil
Informations personnelles :
Nom : Homme Gaëtan Léü
Âge : 25
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2007
Messages : 421
Points : 120
Points : 120
Bon ça fonctionne, et je confirme, la version séparée en plusieurs requêtes est bien plus rapide 0,6 secondes contre 9 dans mon exemple.

Ce sont des tables MyISAM sans clés étrangères et pas de triggers.
Gaetch 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 04h18.


 
 
 
 
Partenaires

Hébergement Web