sql >> Database >  >> RDS >> Mysql

MySQL-indexen - hoeveel zijn genoeg?

De hoeveelheid indexering en de manier waarop u te veel doet, hangt van veel factoren af. Op kleine tabellen zoals uw "categorieën"-tabel wilt of hebt u meestal geen index nodig en dit kan de prestaties zelfs schaden. De reden hiervoor is dat het I/O (d.w.z. tijd) kost om een ​​index te lezen en vervolgens meer I/O en tijd om de records op te halen die bij de overeenkomende rijen horen. Een uitzondering hierop is wanneer u alleen de kolommen in de index opvraagt.

In uw voorbeeld haalt u alle kolommen op met slechts 22 rijen en het kan sneller zijn om gewoon een tabelscan uit te voeren en die te sorteren in plaats van de index te gebruiken. De optimizer kan/moet dit doen en de index negeren. Als dat het geval is, neemt de index gewoon ruimte in beslag zonder voordeel. Als uw "categorieën"-tabel vaak wordt gebruikt, kunt u overwegen deze in het geheugen vast te zetten, zodat de db-server deze toegankelijk houdt zonder dat u de hele tijd naar de schijf hoeft te gaan.

Wanneer u indexen toevoegt, moet u schijfruimte, queryprestaties en de prestaties van bijwerken en invoegen in de tabellen in evenwicht houden. U kunt wegkomen met meer indexen op tabellen die statisch zijn en niet veel veranderen, in tegenstelling tot tabellen met miljoenen updates per dag. U zult op dat moment de effecten van indexonderhoud gaan voelen. Wat echter acceptabel is in uw omgeving, is en kan alleen worden bepaald door u en uw organisatie.

Zorg er bij het uitvoeren van uw analyse voor dat u uw tabel- en indexstatistieken genereert/bijwerkt, zodat u verzekerd bent van nauwkeurige berekeningen.



  1. Tabellen samenvoegen met SUM-probleem in MYSQL

  2. MySQL SOUNDEX() Voorbeelden

  3. een efficiënte manier om te testen of een tabelrij bestaat

  4. Threadveiligheid van MySQL's Select Last_Insert_ID