Heim > Datenbank > MySQL-Tutorial > Wie lösche ich effizient doppelte Zeilen in einer großen SQLite-Tabelle ohne Primärschlüssel?

Wie lösche ich effizient doppelte Zeilen in einer großen SQLite-Tabelle ohne Primärschlüssel?

DDD
Freigeben: 2025-01-05 13:20:41
Original
195 Leute haben es durchsucht

How to Efficiently Delete Duplicate Rows in a Large SQLite Table Without a Primary Key?

Optimierung der Löschung doppelter Zeilen in der SQLite-Datenbank

Frage:
Sie stoßen auf eine riesige Tabelle mit über 36 Millionen Zeilen in SQLite3 die Herausforderung, doppelte Datensätze basierend auf zwei Spalten (Hash und d) zu entfernen. Es gibt jedoch einen Haken: In der Tabelle ist keine Primärschlüsselspalte vorhanden. Auf der Suche nach einer effizienten Lösung erkundigen Sie sich nach dem effektivsten Ansatz zur Bewältigung dieser Aufgabe.

Antwort:
Um doppelte Zeilen ohne Primärschlüssel effektiv zu eliminieren, ist für jeden Datensatz eine eindeutige Kennung erforderlich.

Lösung:
Nutzen Sie die spezielle Rowid-Spalte von SQLite3 als unsere eindeutige Kennung. Die Spalte „rowid“ ist eine Ganzzahl, die automatisch für jede neue Zeile erhöht wird, die der Tabelle hinzugefügt wird. Mit rowid können Sie den Datensatz mit dem niedrigsten rowid-Wert für jede (Hash, d)-Kombination beibehalten.

SQL-Abfrage:
Implementieren Sie die folgende SQL-Abfrage, um Ihr Ziel zu erreichen:

DELETE FROM YourTable
WHERE rowid NOT IN (
    SELECT MIN(rowid)
    FROM YourTable
    GROUP BY hash, d
)
Nach dem Login kopieren

Diese Abfrage identifiziert und eliminiert alle Zeilen mit doppelten (Hash, d)-Kombinationen und stellt sicher, dass nur eine Instanz jeder Kombination in der verbleibt Tisch. Die Unterabfrage MIN(rowid) stellt sicher, dass bei doppelten Datensätzen der Datensatz mit dem niedrigsten Rowid-Wert beibehalten wird.

Das obige ist der detaillierte Inhalt vonWie lösche ich effizient doppelte Zeilen in einer großen SQLite-Tabelle ohne Primärschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage