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

Sådan optimerer du MySQL-forespørgsler baseret på EXPLAIN-plan

Afhænger af, hvad du går efter, og hvad forespørgslen er.

Generelt for hver linje i EXPLAIN, der har en Using where , skal du have det ved at bruge et indeks (possible keys og keys kolonne). Disse er dine filtre og inkluderer WHERE og ON. Når det står Using index er endnu bedre. Det betyder, at der er et dækkende indeks, og MySQL kan hente data direkte fra indekset i stedet for at besøge rækken i tabeldataene.

Linjerne, hvor der ikke er Using where , og det returnerer et stort antal rækker skal ses på. Disse er returnerende værdier for alle rækker i tabellen. Jeg ved ikke, hvad din forespørgsel er, så jeg ved ikke, om jeg skal være bekymret her. Prøv at filtrere resultatsættet for at reducere størrelsen og forbedre ydeevnen.

Du bør generelt prøve at undgå at se Using filesort eller Using temporary , selvom de kun er dårlige, hvis du ikke forventer dem.

Filsortering vises normalt med ORDER-klausulen. Du ønsker generelt, at MySQL skal bruge et dækkende indeks (Using index ), så rækkerne returneres allerede i rækkefølge fra serveren. Hvis de ikke er det, så skal MySQL bestille dem bagefter, ved hjælp af filesort.

Using temporary kan være dårligt, når det refererer til afledte tabeller, fordi de ikke har indekser. Det ser ud til, at du eksplicit har oprettet en midlertidig tabel med indekser, så her er det ikke dårligt. Nogle gange er dit eneste valg at bruge en afledt tabel, og derfor Using temporary .




  1. Sådan koder du (utf8mb4) i Python

  2. Hvordan afinstallerer du MySQL fra Mac OS X?

  3. Top 10 ofte stillede spørgsmål om SQL Server Performance Monitoring

  4. Hvordan kan jeg bruge PDO til at hente et resultatarray i PHP?