:: DEVELOPER ZONE
Comme MySQL ne supporte encore ni les sous-requêtes, ni l'utilisation de
plusieurs tables dans une requête DELETE (avant la version 4.0), vous
devez utiliser l'approche suivante pour effacer des lignes de deux tables
reliées :
Sélectionnez (SELECT) les lignes de la table principale en vous basant sur une
condition WHERE.
Effacez (DELETE) les lignes de la table principale en vous basant sur la même
condition.
DELETE FROM table_liée WHERE colonne_liée IN (lignes_séléctionnées).
Si le nombre total des caractères dans la requête avec la colonne_liée est
supérieur à 1,048,576 (la valeur par défaut est max_allowed_packet, vous devez
la découper en parties plus petites et exécuter plusieurs DELETE. Vous obtiendrez
probablement les suppressions les plus rapides en n'effa¸ant que 100-1000 colonne_liée
par requête si colonne_liée est un index. Si ce n'est pas un index, la vitesse est
indépendante du nombre d'arguments dans la clause IN.
© 1995-2005 MySQL AB. All rights reserved.
