MySQL Leistung DELETE oder UPDATE?

8

Ich habe eine MyISAM-Tabelle mit mehr als 10 ^ 7 Zeilen. Wenn ich Daten hinzufüge, muss ich ~ 10 Zeilen am Ende aktualisieren. Ist es schneller, sie zu löschen und dann die neuen einzufügen, oder ist es schneller, diese Zeilen zu aktualisieren? Daten, die aktualisiert werden sollen, sind nicht Teil des Indexes. Was ist mit der Fragmentierung von Indizes / Daten?

    
Aleksandar Vucetic 05.05.2009, 13:50
quelle

5 Antworten

20

UPDATE ist bei weitem viel schneller.

Wenn Sie UPDATE eingeben, werden die Tabellensätze nur mit neuen Daten überschrieben.

Wenn Sie DELETE , sollten die Indizes aktualisiert werden (denken Sie daran, Sie löschen die ganze Zeile, nicht nur die Spalten, die Sie ändern müssen) und Datenblöcke können verschoben werden (wenn Sie die PCTFREE -Grenze treffen)

Und das alles muss wieder an INSERT gemacht werden.

Deshalb sollten Sie immer

verwenden %Vor%

anstelle von REPLACE .

Der erste ist eine Operation UPDATE im Falle einer Schlüsselverletzung, während der letzte DELETE / INSERT ist.

    
Quassnoi 05.05.2009, 13:57
quelle
3

Es ist schneller zu aktualisieren. Sie können auch INSERT ON DUPLICATE KEY UPDATE

verwenden %Vor%

Weitere Informationen finden Sie in der Dokumentation

    
Nadia Alramli 05.05.2009 13:55
quelle
2

Anstatt Daten aus Gründen der Leistung zu löschen oder zu aktualisieren, würde ich eine Partitionierung in Erwägung ziehen.

Ссылка

Dadurch können Sie die Daten historisch beibehalten und die Leistung nicht beeinträchtigen.

    
randy melder 14.09.2009 12:10
quelle
1

Logisch DELETE + ADD = 2 Aktionen, UPDATE = 1 Aktion. Durch das Löschen und Hinzufügen neuer Änderungen werden IDs in auto_increment aufgezeichnet, wenn diese Datensätze also Beziehungen aufweisen, die unterbrochen werden oder auch aktualisiert werden müssen. Ich würde für UPDATE gehen.

    
Paul G. 05.05.2009 13:55
quelle
0

Verwenden Sie ein Update, wobei Column = 'something' einen Index verwenden soll, solange sich das Suchkriterium im Index befindet (ob es sich bei einem Such- oder Scanvorgang um ein völlig anderes Problem handelt).

Wenn Sie diese Aktualisierungen häufig durchführen, aber keinen Index für die Kriterienspalte haben, würde ich empfehlen, einen Index für die von Ihnen verwendete Spalte zu erstellen. das sollte helfen, die Dinge zu beschleunigen.

    
DForck42 05.05.2009 14:10
quelle

Tags und Links