Etant donné que MySQL ne supporte ni les sub-selects ni les effacement sur des tables multiples, vous devrez utiliser l'approche suivante pour effacer des lignes dans deux tables en même temps
- Sélectionner les lignes dans la table principale, avec une clause
WHERE
.
- Effacer ces lignes avec les mêmes conditions.
DELETE FROM related_table WHERE related_column IN (selected_rows)
Si le nombre total de caractères dans la requête avec related_column
dépasse 1,048,576 (la valeur par défaut de max_allowed_packet
), il vous faudra scinder la requête en plusieurs sous-requête de plus petite taille, et exécuter des DELETE
multiples. Le meilleur rendement se situe dans une fourchette de 100-1000 effacements dans related_column
à chaque fois, si related_column
est un index. Si related_column
n'est pas un index, la vitesse sera indépendante du nombre d'arguments de la clause IN
.