sql >> Databasteknik >  >> RDS >> Mysql

Vilka är de största fördelarna med att använda INDEXES i mysql?

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?



  1. Upprepade kalenderhändelser och lite avslutande matematik

  2. Lagringsgränser för MySQL användardefinierade variabler

  3. Hur skapar man Codeigniter-språkfiler från databasen?

  4. Hur låses innodb-tabeller när ON INSERT-utlösaren bearbetas?