Supposons qu'il existe une table (syslogs)avec 1000 Dix mille enregistrements doivent être supprimés sans arrêter l'entreprise. Tous les enregistrements avec statusid=1 doivent être supprimés. Il y en a près de 600<.> dix mille enregistrements. , exécutez directement DELETE FROM syslogs WHERE statusid=1 et vous constaterez que la suppression échoue en raison de l'erreur de Délai d'attente de verrouillage dépassé.
Comme cette instruction implique trop d'enregistrements, nous utilisons le paramètreLIMIT pour supprimer par lots, par exemple tous les 10 000 les éléments sont supprimés une fois, nous pouvons ensuite utiliser des instructions comme MySQL pour compléter :
DELETE FROM syslogs WHERE status=1 ORDER BY statusid LIMIT 10000;
limite lors d'une suppression massive. Car si limite n'est pas utilisée, la suppression d'une grande quantité de données est susceptible de provoquer un blocage.
Si l'instructiondelete where ne figure pas dans l'index, vous pouvez d'abord trouver la clé primaire , puis supprimez la base de données en fonction de la clé primaire.
Habituellement, il est préférable d'ajouterlimite 1 mettre à jour et supprimer 🎜 > pour éviter toute utilisation abusive.
Ce qui précède est le contenu de MySQL avancé, suppression par lots, grandes quantités de données. Pour plus de contenu connexe, veuillez faire attention au chinois PHP. site Web (www.php.cn) !