sql >> Database >  >> RDS >> Mysql

Wanneer een index toevoegen aan een SQL-tabelveld (MySQL)?

Het is niet altijd duidelijk waar indexen in SQL-tabellen moeten worden gebruikt. Maar er zijn enkele algemene vuistregels die u in de meeste gevallen kunnen helpen beslissen.

  1. Plaats index op kolommen die worden gebruikt in waar-clausules
  2. Plaats index op kolommen die u gebruikt om mee te doen.
  3. Probeer niet meer dan 4-5 indexen te gebruiken voor kolommen in dezelfde tabel.

En de algemene concepten die u in gedachten moet houden zijn:

  1. Elke index die u gebruikt, maakt zoekopdrachten in die kolommen sneller.
  2. Elke index die u toevoegt, waardoor het invoegen in deze tabel iets langzamer gaat.
  3. Van de vorige twee. Het is uw verantwoordelijkheid om te beslissen hoeveel invoegingen en query's u op tabellen doet om te beslissen of u index wilt gebruiken en op welke kolommen of niet.

BEWERKEN

@AndrewLazarus commentaar is erg belangrijk en ik besloot het toe te voegen aan het antwoord:

  1. Gebruik geen indexen voor kolommen met slechts weinig verschillende waarden. Bijvoorbeeld een kolom die een status bevat, wanneer er maar weinig statussen zijn, of een booleaanse waarde. De reden om dit niet te doen, is dat de index u niet echt helpt, omdat deze alleen wordt gedeeld door het aantal waarden, en aangezien u er maar een paar hebt, is er geen echt voordeel. De tabel zou meer ruimte in beslag nemen met de index en langzamer preformeren bij het invoegen, maar je zult geen significant betere prestaties krijgen tijdens het opvragen


  1. FOUT 1698 (28000):Toegang geweigerd voor gebruiker 'root'@'localhost'

  2. Hoe SQL-variabelen in PHP te binden?

  3. Is er een SQL Server Profiler voor SQL Server Express?

  4. Hoe QUOTE() werkt in MariaDB