Ich bevölke eine mittelgroße Tabelle (60 GB, 500 Millionen Zeilen). Der Prozess wird relativ schnell abgeschlossen, wenn die Tabelle keinen Primärschlüssel enthält (~ 1 Stunde mit Masseneinfügung), aber es dauert ~ 10 mal länger, wenn ich diese Tabelle mit dem Primärschlüssel erstelle. Ich nehme an, dies ist, weil es Zeit braucht, um die Eindeutigkeitseinschränkung zu überprüfen und auch den Index bei jeder Einfügung zu aktualisieren.Leistungsproblem mit Primärschlüssel
Ich dachte, eine gute Problemumgehung wäre, den Primärschlüssel später hinzuzufügen, da die Indexierung für die Tabelle, die bereits gefüllt ist, im Vergleich zur inkrementellen Indexierung viel schneller sein sollte. Aber sqlite scheint nicht die Option zu haben, den Primärschlüssel hinzuzufügen, nachdem die Tabelle erstellt wurde (nicht sicher, warum?).
Ich denke, ich könnte einfach überhaupt keinen Primärschlüssel verwenden und stattdessen einfach einen eindeutigen Index hinzufügen, nachdem die Tabelle ausgefüllt ist. Hat das einen Nachteil?
Oder eine bessere Lösung empfohlen?
Aber gemäß Ihrer verknüpften Antwort könnte der Primärschlüssel den Leistungsvorteil haben, wenn er in einer INTEGER-Spalte ist? – max
Ja, aber Ihre Tabelle hat einen anderen Typ verwendet. –
Ein INTEGER PRIMARY KEY hätte die Insertionen nicht verlangsamt. –