sql >> Database >  >> RDS >> Mysql

MySQL meerdere indexen versus index met meerdere kolommen voor zoeken

Je moet begrijpen dat MySQL (in het geval van InnoDB) alleen het meest linkse voorvoegsel van je indexen gebruikt. Dus als de index in Veld1 + Veld2 staat, bevragen met alleen Veld2 in de WAAR kan niet de hele index gebruiken.

En als Field1 + Field2 + Field3 is de index, een zoekopdracht met alleen Field1 & Field3 in WAAR hetzelfde zou gebeuren.

Optie 1

U zou voor elk zoekscenario een aparte index moeten maken als u elke zoekopdracht wilt optimaliseren. Als de tabellen echter groot zijn, zouden de indexen ook extreem groot worden. Als die zoekopdrachten heel vaak worden gedaan, zou dit de moeite waard zijn.

Optie 2

U kunt een handige truc gebruiken als uw zoekopdrachten een lage selectiviteit hebben (d.w.z. geslacht) door de kolommen met lage selectiviteit helemaal links te plaatsen en Gender IN(M, F) te gebruiken om het op te nemen in de WAAR clausule samen met de andere kolom(men) om gebruik te maken van de hele index.



  1. Gebruik van parameters voor mysql_query

  2. SQL voeg dubbele rijen samen en voeg waarden samen die anders zijn

  3. Een index maken op een tabelvariabele

  4. Hoe verander je het SQL-isolatieniveau van Python met MySQLdb?