sql >> Database >  >> RDS >> Oracle

Hoe weet je wat een goede index is?

Dit hangt af van wat je onder 'goed' en 'slecht' verstaat. In principe moet je je realiseren dat elke index die je toevoegt de prestaties bij elke zoekopdracht met die kolom zal verbeteren (dus het toevoegen van een index aan de 'achternaam'-kolom van een persoonstabel zal de prestaties verbeteren voor zoekopdrachten die "where lastname =" in zich hebben) maar verminder de schrijfprestaties over de hele tafel.

De reden hiervoor is dat wanneer u een rij toevoegt of bijwerkt, deze zowel de tabel zelf als elke index waarvan die rij lid is, moet toevoegen of bijwerken. Dus als je vijf indexen op een tabel hebt, moet elke toevoeging naar zes plaatsen schrijven - vijf indexen en de tabel - en een update kan in het ergste geval tot zes plaatsen raken.

Het maken van een index is dan een evenwichtsoefening tussen de querysnelheid en de schrijfsnelheid. In sommige gevallen, zoals een datamart die slechts één keer per week met gegevens wordt geladen in een nachtelijke taak maar duizenden keren per dag wordt opgevraagd, is het heel logisch om te overladen met indexen en de query's zo veel mogelijk te versnellen. In het geval van online transactieverwerkingssystemen wilt u echter proberen een evenwicht tussen beide te vinden.

Kortom, voeg indexen toe aan kolommen die veel worden gebruikt in geselecteerde zoekopdrachten, maar probeer niet te veel toe te voegen en voeg dus eerst de meest gebruikte kolommen toe.

Daarna is het een kwestie van load-testen om te zien hoe de prestaties reageren onder productieomstandigheden, en veel tweaken om een ​​acceptabele balans te vinden.



  1. JSON_SET() - Waarden invoegen of bijwerken in een JSON-document in MySQL

  2. SQL-tijdsverschil tussen twee datums resulteert in uu:mm:ss

  3. Kan ik een enkele tabel herstellen vanuit een volledig mysql mysqldump-bestand?

  4. Hoe krijg ik het eerste record in elke groep in MySQL