sql >> Database >  >> RDS >> Mysql

MySQL:verschil tussen `... ADD INDEX(a); ... ADD INDEX(b);` en `... ADD INDEX(a,b);`?

De gecombineerde INDEX is een combinatie van de toetsen "a" en "b". Het verbetert de toegang aanzienlijk als "a" of "a" EN "b" deel uitmaken van de zoekexpressie.

Deze index is niet handig als u alleen "b" opgeeft in uw SQL-instructies.

Daarom kan het handig zijn om twee verschillende indices op te geven - maar ze moeten verschillende namen gebruiken.

Afhankelijk van de toegangspatronen zou ik een index op "a" en "b" aanbevelen en een extra index op "b" als dit overeenkomt met uw behoeften.

Houd er rekening mee dat elke extra index de database vertraagt ​​bij alle bewerkingen die gegevens wijzigen. Soms is het beter om sommige indices weg te houden. Het is normaal gesproken een goed advies om GEEN indexen te GEBRUIKEN op een kolom van een tabel.

Nog een tip:om te beslissen of een INDEX(a,b) of INDEX(b,a) moet worden gebruikt, kijk eens naar de distributie van uw gegevens. Zet de waarden met de grotere spreiding van verschillende waarden in de eerste kolom van de index om de selectiviteit van die index te vergroten. Deze waarde is normaal gesproken gebaseerd op de kwaliteit van het eerste indexelement.

Een index op de kolommen NAAM en SEX moet bijvoorbeeld worden aangemaakt als INDEX(NAAM, SEX) omdat er veel meer namen zijn die verschillend zijn van geslacht(en?).



  1. Hoe ontwerp je een datamodel dat omgaat met de huidige medewerkers en voorspelde medewerkers?

  2. Hoe werkt het met een PostgreSQL-database met Docker en Flask?

  3. Een Excel-document maken vanuit een Java-programma met behulp van Apache POI

  4. Waarom levert een geparametriseerde query een veel langzamer queryplan op dan een niet-geparametriseerde query?