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

MySQL-indekser – hvor mange er nok?

Mængden af ​​indeksering og linjen for at gøre for meget vil afhænge af en masse faktorer. På små tabeller som din "kategorier"-tabel vil du normalt ikke have eller har brug for et indeks, og det kan faktisk skade ydeevnen. Årsagen er, at det tager I/O (dvs. tid) at læse et indeks og derefter mere I/O og tid at hente de poster, der er knyttet til de matchede rækker. En undtagelse er, når du kun forespørger på kolonnerne indeholdt i indekset.

I dit eksempel henter du alle kolonnerne og med kun 22 rækker, og det kan være hurtigere blot at lave en tabelscanning og sortere dem i stedet for at bruge indekset. Optimizeren kan/bør gøre dette og ignorerer indekset. Hvis det er tilfældet, så fylder indekset bare uden fordel. Hvis din "kategorier"-tabel tilgås ofte, kan du overveje at fastgøre den til hukommelsen, så db-serveren holder den tilgængelig uden at skulle gå til disken hele tiden.

Når du tilføjer indekser, skal du balancere diskplads, forespørgselsydeevne og ydeevnen ved opdatering og indsættelse i tabellerne. Du kan slippe afsted med flere indekser på tabeller, der er statiske og ikke ændrer sig meget i modsætning til tabeller med millioner af opdateringer om dagen. Du vil begynde at mærke virkningerne af indeksvedligeholdelse på det tidspunkt. Hvad der dog er acceptabelt i dit miljø er og kan kun bestemmes af dig og din organisation.

Når du laver din analyse, skal du sørge for at generere/opdatere din tabel- og indeksstatistik, så du kan være sikker på nøjagtige beregninger.



  1. Skylning af enkelt markør

  2. Hvordan indstiller jeg første dag i ugen til mandag, når jeg bruger Week(Date) i PHP/MySQL?

  3. Laravel:rækkefølge efter hvor i

  4. Hvordan finder man de dårligst ydende forespørgsler i SQL Server 2008?