Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zusammengesetzte InnoDB-Indizierungsreihenfolge und INSERT-Leistung

(Hinweis:Diese Antwort verdeutlicht oder widerspricht einigen der bereits geschriebenen Kommentare.)

DELETEs werden durch das Löschen der Indexeinträge verlangsamt. UPDATEs kann verlangsamt werden -- es hängt davon ab, ob eine indizierte Spalte geändert wird.

SELECTs , UPDATEs , und DELETEs , aber nicht INSERTs , müssen die Zeile(n) finden; Dafür kann ein Index sehr hilfreich sein.

Ein INSERT wird ein zusätzlicher Betrag verletzt, wenn es einen UNIQUE gibt zu prüfender Index.

Sekundärschlüssel (in InnoDB), außer für UNIQUE Schlüssel, werden aktualisiert (normalerweise wegen INSERT und DELETEs , aber möglicherweise wegen UPDATE ) 'verzögert' über den sogenannten "Änderungspuffer". Dadurch wird die Aktualisierung des Index effektiv hinausgezögert, der Index bleibt aber dennoch voll nutzbar.

Nichts davon wird durch die Reihenfolge der Spalten in einem Index beeinflusst. Wenn jedoch ein Index größer ist, als im RAM zwischengespeichert werden kann, kommt "Caching" ins Spiel, und I/O kann beteiligt sein oder auch nicht. Aber das ist ein anderes Thema.

Im Allgemeinen der Vorteil aus einem Index zum Lesen bei weitem überwiegt die Verlangsamung für Schreibvorgänge.