
Supprimer efficacement les anciens enregistrements MySQL : conserver uniquement les derniers N
MySQL ne prend pas directement en charge la suppression d'enregistrements avec une clause LIMIT dans une sous-requête. Cependant, nous pouvons y parvenir en utilisant des sous-requêtes imbriquées pour une solution propre.
Disons que vous devez supprimer toutes les entrées sauf les N les plus récentes, classées par colonne id (décroissante). Cette approche évite l'écueil courant de l'utilisation de LIMIT directement dans l'instruction DELETE :
La requête suivante y parvient efficacement :
<code class="language-sql">DELETE FROM `table`
WHERE id NOT IN (
SELECT id
FROM (
SELECT id
FROM `table`
ORDER BY id DESC
LIMIT N
) as latest_records
);</code>Cette requête exploite une sous-requête (latest_records) pour identifier les identifiants des N enregistrements les plus récents. L'instruction DELETE externe supprime ensuite toutes les lignes dont les ID ne sont pas dans cet ensemble.
N'oubliez pas que les performances peuvent être encore optimisées en fonction de la structure de votre table et du volume de données spécifiques. Pensez à ajouter des index à la colonne id pour des améliorations significatives des performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
La différence entre passerelle et routeur
Utilisation de la fonction sqrt en Java
Enregistrez-vous dans un emplacement virtuel sur DingTalk
Les moments WeChat ne peuvent pas être actualisés
ASUS x402c
La différence entre les notes de bas de page et les notes de fin
Comment convertir un singe en wav
Quels sont les paramètres du chapiteau ?