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

Hvordan opbygger man indeks i MySQL for at fremskynde denne forespørgsel?

For virkelig at give et svar ville det være nyttigt at se, om du allerede har eksisterende indekser, men...

Alt dette forudsætter, at tabel 't' eksisterer, og du skal tilføje et indeks, og du i øjeblikket kun har et enkelt indeks på din primære nøgle eller slet ingen indekser.

Et dækkende indeks for forespørgslen vil give den bedste ydeevne til dine behov, men med ethvert indeks ofrer du en vis indsættelseshastighed. Hvor meget det offer betyder, afhænger af din ansøgnings profil. Hvis du læser det meste fra tabellen, betyder det ikke så meget. Hvis du kun har nogle få indekser, vil selv en moderat skrivebelastning ikke betyde noget. Begrænset lagerplads til dine borde kan også komme i spil... Du skal foretage den endelige evaluering af afvejningen, og hvis den er mærkbar. Det gode er, at det er et ret konstant hit. Tilføjelse af et indeks bremser typisk ikke dine indsættelser eksponentielt, bare lineært.

Uanset hvad, her er dine muligheder for den bedste udvalgte ydeevne:

  1. Hvis c3 er din primære nøgle til tabel t, kan du ikke gøre noget bedre i forespørgslen for at gøre det hurtigere med et indeks.
  2. Forudsat at c1 er din primære nøgle t:

    ALTER TABLE t ADD INDEX covering_index (c3,c2);  
    
  3. Hvis c1 ikke er din pk (og heller ikke c2), så brug denne:

    ALTER TABLE t ADD INDEX covering_index (c3,c2,c1);  
    
  4. Hvis c2 er din PK, brug denne:

    ALTER TABLE t ADD INDEX covering_index (c3,c1);  
    
  5. Hvis plads på disk eller indsættelseshastighed er et problem, kan du vælge at lave et punktindeks. Du vil ofre en vis ydeevne, men hvis du sætter tungt ind, er det måske den rigtige mulighed:

    ALTER TABLE t ADD INDEX a_point_index (c3);  
    


  1. NUMTOYMINTERVAL() Funktion i Oracle

  2. Top 5 fakta til at finde og erstatte SQL-tekster i SQL Server med REPLACE-funktionen

  3. Hvordan man ved, hvilken tabel et resultat kom fra, når man bruger UNION i MySQL

  4. MySql forskel mellem to tidsstempler i dage?