sql >> Databasteknik >  >> RDS >> Mysql

InnoDB sammansatt indexeringsordning och INSERT-prestanda

(Obs:Det här svaret förtydligar eller inte håller med några av de kommentarer som redan skrivits.)

DELETEs saktas ner på grund av att indexposterna raderas. UPDATEs kan saktas ner -- det beror på om en indexerad kolumn ändras.

SELECTs , UPDATEs och DELETEs , men inte INSERTs , behöver hitta raden/raderna; för detta kan ett index hjälpa mycket.

En INSERT skadas ett extra belopp om det finns en UNIQUE index för att kontrollera.

Sekundära nycklar (i InnoDB), utom för UNIQUE nycklar, uppdateras (vanligtvis på grund av INSERT och DELETE , men möjligen på grund av UPDATE ) på ett "fördröjt" sätt via det som kallas "Change Buffer". Detta skjuter faktiskt upp uppdateringen av indexet, men håller fortfarande indexet fullt användbart.

Inget av detta påverkas av ordningen på kolumnerna i ett index. Men om ett index är större än vad som kan cachelagras i RAM, kommer "cachning" in i spelet, och I/O kan vara inblandad eller inte. Men det är ett annat ämne.

I allmänhet förmånen från ett index för att läsa uppväger långt nedgången för skrivoperationer.



  1. Hur slår jag på och av IDENTITY_INSERT med SQL Server 2008?

  2. Mysql:Välj all data mellan två datum

  3. Jag måste dra data baserat på dess exakta sekvens i en array

  4. Kerberos för SQLyog av MariaDB Connector/C