Kort svar:
Index snabbar upp SELECT
s och sakta ner INSERT
s.
Vanligtvis är det bättre att ha index, eftersom de påskyndar select
mer än de saktar ner insert
.
På en UPDATE
indexet kan påskynda saker väldigt om ett indexerat fält används i WHERE
klausul och sakta ner saker och ting om du update
ett av de indexerade fälten.
Hur vet du när du ska använda ett index
Lägg till EXPLAIN
framför din SELECT
uttalande.
Så här:
EXPLAIN SELECT * FROM table1
WHERE unindexfield1 > unindexedfield2
ORDER BY unindexedfield3
Kommer att visa dig hur mycket arbete MySQL kommer att behöva göra på vart och ett av de oindexerade fälten.
Använda den informationen kan du bestämma om det är värt att lägga till index eller inte.
Explain kan också berätta om det är bättre att släppa och indexera
EXPLAIN SELECT * FROM table1
WHERE indexedfield1 > indexedfield2
ORDER BY indexedfield3
Om mycket få rader är markerade, eller MySQL bestämde sig för att ignorera indexet (det gör det då och då) då kan du lika gärna släppa indexet, eftersom det är sakta ner din insert
s men inte påskynda ditt select
s.
Återigen kan det också vara så att din select-sats inte är smart nog.
(Ursäkta komplexiteten i svaret, jag försökte hålla det enkelt, men misslyckades).
Länk:
MySQL-index – vad är de bästa metoderna?