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

MYSQL-databaseoptimering ved hjælp af indeksering

Med hensyn til indeksspørgsmålene er et indeks ikke kun ønskeligt, men det er nødvendigt at "fremskynde" tingene. Som jeg forstår det (i "lægmands"-termer), er et indekss funktion at fremskynde søgninger og gendannelser af data inde i en tabel.

Grunde til at bruge indekser:

  1. Identificer hver række entydigt i hver tabel (den primære nøgle er trods alt et indeks)
  2. Indekserne er sorteret (selvom dataene ikke er det)
  3. Fremskynd søgninger og filtre:Et indeks gør gendannelsen af ​​data hurtigere, da det "holder" placeringen af ​​dataene i tabellen (det "pinpointer" de data, du vil gendanne). Det gør også lettere for databasemotoren at filtrere dataene (det er altid hurtigere og nemmere at filtrere sorteret data end forvrænget data)
  4. Optimer den måde, data gendannes på, når du bruger relaterede tabeller:Hver fremmednøgle skal indekseres for at fremskynde de forespørgsler, der involverer primære - fremmednøglerelationer

Nogle "tommelfingerregler", jeg bruger til at bestemme, hvilke felter der skal indekseres:

  • Hver primærnøgle er indekseret (det oplagte). en:en primær nøgle skal være unik og ikke null)
  • Hver fremmednøgle skal indekseres (for at gøre relationer mellem primær og fremmed nøgle effektiv)
  • Hvert numeriske eller datofelt, som jeg skal udføre søgninger på, skal indekseres. Når det er sagt, prøver jeg at undgå double (eller enhver anden numerisk type med flydende komma) felter, der skal indekseres, da de generelt bruges til at gemme værdier, der ikke er beregnet til at blive søgt i.
  • Hvert char eller varchar felt, hvor jeg skal udføre søgninger, skal indekseres. Prøv at undgå indekser på text felter, da de kan rumme meget store værdier i dem.
  • Undgå indeksering binær (blob ) felter... det giver ingen mening
  • Gør det ikke falde i fristelsen til at indeksere alt. Tag dig tid til at beslutte, hvilke felter skal være indekseret og hvilke felter ikke må blive indekseret.


  1. Returner en liste over tidszoner, der understøttes af PostgreSQL

  2. POWER() Eksempler i SQL Server

  3. Sådan returnerer du positionen for et listeelement i MySQL

  4. JSON_QUERY() Eksempler i SQL Server (T-SQL)