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

Hvornår skal man tilføje et indeks på et SQL-tabelfelt (MySQL)?

Det er ikke altid entydigt, hvor man skal bruge indekser i SQL-tabeller. Men der er nogle generelle tommelfingerregler, som kan hjælpe dig med at beslutte i de fleste tilfælde.

  1. Sæt indeks på kolonner, der bliver brugt i where-sætninger
  2. Sæt indeks på kolonner, som du bruger til at deltage i.
  3. Prøv ikke at bruge mere end 4-5 indekser på kolonner i samme tabel.

Og de generelle begreber, du bør huske på, er:

  1. Ethvert indeks, du bruger, vil gøre søgninger i disse kolonner hurtigere.
  2. Ethvert indeks, som du tilføjer, hvilket medfører, at indsættelse i denne tabel går en smule langsommere.
  3. Fra de to foregående. Det er dit ansvar at beslutte, hvor mange indsættelser og forespørgsler du laver på tabeller for at beslutte, om du vil bruge indeks og på hvilke kolonner eller ej.

REDIGER

@AndrewLazarus kommentar er virkelig vigtig, og jeg besluttede at tilføje den til svaret:

  1. Brug ikke indekser på kolonner med kun få forskellige værdier. For eksempel en kolonne, der har en tilstand, når der kun er få tilstande, eller en boolsk værdi. Grunden til ikke at gøre det er, at indekset ikke rigtig hjælper dig, da det kun vil blive divideret med antallet af værdier, og da du kun har nogle få af dem, vil der ikke være nogen reel fordel. Tabellen ville forbruge mere plads med indekset og præforme langsommere ved indsættelse, men du vil ikke få væsentlig bedre ydeevne, mens du forespørger


  1. Materialiseret visning i mysql

  2. Hvornår skal jeg bruge CROSS APPLY over INNER JOIN?

  3. Kan ikke udstede datamanipulationserklæringer med executeQuery()

  4. Hvordan aktiverer jeg mysqlnd for php?