Ich verwende derzeit die folgende Abfrage, um in eine Tabelle nur einzufügen, wenn der Datensatz nicht bereits vorhanden ist, vermutlich führt dies zu einem Tabellenscan. Es fügt 28.000 Datensätze in 10 Minuten:Zunehmende INSERT-Geschwindigkeit
INSERT INTO tblExample(column)
(SELECT ? FROM tblExample WHERE column=? HAVING COUNT(*)=0)
Wenn ich die Abfrage an den folgenden ändern, ich 98.000 Datensätze in 10 Minuten eingeben:
INSERT INTO tblExample(column) VALUES (?)
Aber es wird nicht, ob der Datensatz wird Überprüfung bereits existiert.
Kann jemand eine andere Art der Abfrage vorschlagen, so dass meine Insert-Geschwindigkeit schneller ist?
Haben Sie einen eindeutigen Index für die Spalte? Das würde sowohl die Suchabfrage beschleunigen als auch die Einschränkung erzwingen (falls Sie es in Ihrem Code verpasst haben). – Thilo
Danke @Thilo. Ich habe den Primärschlüssel von der Tabelle genommen, weil ich gelesen habe, dass ein PK erhöht die Zeit für das Einfügen erhöht. Schlägst du vor, dass ich einen PK benutze und den Fehler erhalte, wenn ein Duplikat gefunden wird? – jdie8274j
Mit dem PK wird die Einfügung verlangsamt, aber wenn Sie nicht sicher sind, dass die Daten eindeutig sind, benötigen Sie diese Einschränkung Validierung. Also ja, zieh es wieder an. – Thilo