18.16 Effacer des lignes dans les tables liées

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

  1. Sélectionner les lignes dans la table principale, avec une clause WHERE.
  2. Effacer ces lignes avec les mêmes conditions.
  3. 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.