sql >> Database teknologi >  >> RDS >> Mysql

Indekser og primære nøgler med flere kolonner

Jeg er ikke indgående bekendt med det interne af indekser på mySql, men på de to databaseleverandørprodukter, som jeg er bekendt med (MsSQL, Oracle), er indekser balancerede træstrukturer, hvis noder er organiseret som en sekvenseret tupel af kolonnerne. indeks er defineret på (I den definerede sekvens )

Så medmindre mySql gør det meget anderledes (sandsynligvis ikke), kan ethvert sammensat indeks (på mere end én kolonne) kunne bruges af enhver forespørgsel, der skal filtreres eller sorteres efter en undergruppe af kolonnerne i indekset, så længe listen over kolonner er kompatibel, dvs. hvis kolonnerne, når de er sekvenseret på samme måde som den sekvenserede liste over kolonner i det komplette indeks, er en ordnet undergruppe af det komplette sæt af indekskolonner, som starter i begyndelsen af ​​den faktiske indekssekvens, uden mellemrum undtagen i slutningen...

Med andre ord betyder det, at hvis du har et indeks på (a,b,c,d), kan en forespørgsel, der filtrerer på (a), (a,b) eller (a,b,c), også bruge indekset , men en forespørgsel, der skal filtreres på (b), eller (c) eller (b,c), vil ikke være i stand til at bruge indekset...

Så i dit tilfælde, hvis du ofte har brug for at filtrere eller sortere på kolonne emne alene, skal du tilføje endnu et indeks på den kolonne af sig selv...



  1. Bruger Oracle EXPAND_SQL_TEXT

  2. Er der nogen skade i at nulstille den automatiske stigning?

  3. hvordan genbruger man slettede primærnøgler i mysql?

  4. Airflow mysql til gcp Dag fejl