sql >> Database >  >> RDS >> Mysql

Wanneer werkt MySQL de indexen bij?

Updates van indexen zijn tweeledig.

Het eerste deel is het invoegen/bijwerken/verwijderen van het item in/uit de index. De index wordt bijgewerkt zodra een record wordt gewijzigd en dit proces blokkeert de zoekopdracht totdat deze is voltooid.

Hierdoor kunnen records sneller worden opgehaald op basis van een voorwaarde in een geïndexeerde kolom, het meest bekende doel van een index.

Het tweede deel is het bijwerken van de statistieken van de index. Hierdoor kan de optimizer bepalen of het voor een bepaalde zoekopdracht zelfs de moeite waard is om de index te gebruiken. Stel je een zoekopdracht voor zoals SELECT * FROM users WHERE disabled = 0 . Neem aan dat de meeste gebruikers daadwerkelijk actief zijn. Als de indexstatistieken up-to-date zijn, zal de optimizer beseffen dat de meeste records uit de tabel door de query worden geretourneerd, de tabel zal bijna volledig moeten worden gescand. Het zal waarschijnlijk besluiten om de index niet te gebruiken en de tabel meteen te scannen.

Deze update vindt niet automatisch plaats behalve in zeer specifieke situaties . Deze statistieken moeten regelmatig handmatig worden bijgewerkt met een ANALYZE TABLE [table_name]



  1. Teradata vullen met realistische testgegevens De Novo

  2. SQL Server Linked Server Voorbeeld Query

  3. SQL UPDATE-instructie om twee waarden in twee rijen te wisselen

  4. Is er een optimale methode om een ​​samengestelde MySQL-index te bestellen?