
Ältere MySQL-Einträge effizient entfernen: Nur die neuesten N behalten
MySQL unterstützt das Löschen von Datensätzen mit einer LIMIT-Klausel in einer Unterabfrage nicht direkt. Für eine saubere Lösung können wir dies jedoch mithilfe verschachtelter Unterabfragen erreichen.
Angenommen, Sie müssen alle bis auf die aktuellsten N Einträge entfernen, sortiert nach der Spalte id (absteigend). Dieser Ansatz vermeidet die häufige Gefahr, LIMIT direkt in der DELETE-Anweisung zu verwenden:
Die folgende Abfrage erreicht dies effektiv:
<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>Diese Abfrage nutzt eine Unterabfrage (latest_records), um die IDs der N neuesten Datensätze zu identifizieren. Die äußere DELETE-Anweisung entfernt dann alle Zeilen, deren IDs nicht in diesem Satz enthalten sind.
Denken Sie daran, dass die Leistung abhängig von Ihrer spezifischen Tabellenstruktur und Ihrem Datenvolumen weiter optimiert werden kann. Erwägen Sie das Hinzufügen von Indizes zur Spalte id, um erhebliche Leistungsverbesserungen zu erzielen.
Das obige ist der detaillierte Inhalt vonWie lösche ich mit SQL alle bis auf die neuesten N Datensätze in einer MySQL-Tabelle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Der Unterschied zwischen Gateway und Router
Verwendung der sqrt-Funktion in Java
Checken Sie den virtuellen Standort auf DingTalk ein
WeChat-Momente können nicht aktualisiert werden
ASUS x402c
Der Unterschied zwischen Fußnoten und Endnoten
So konvertieren Sie Ape in WAV
Was sind die Parameter des Festzeltes?