sql >> Databasteknik >  >> RDS >> Mysql

Hur man optimerar MySQL-frågor baserat på EXPLAIN-planen

Beror på vad du är ute efter och vad frågan är.

I allmänhet, för varje rad i EXPLAIN som har en Using where måste du använda ett index (possible keys och keys kolumn). Dessa är dina filter och inkluderar WHERE och ON. Med det står Using index är ännu bättre. Det betyder att det finns ett täckande index och MySQL kan hämta data direkt från indexet istället för att besöka raden i tabelldata.

Raderna där det inte finns någon Using where , och det returnerar ett stort antal rader bör tittas på. Dessa är returnerande värden för alla rader i tabellen. Jag vet inte vad din fråga är, så jag vet inte om jag ska bli orolig här. Försök att filtrera resultatuppsättningen för att minska storleken och förbättra prestandan.

Du bör generellt försöka undvika att se Using filesort eller Using temporary , även om de bara är dåliga om du inte förväntar dig dem.

Filsortering visas vanligtvis med ORDER-satsen. Du vill vanligtvis att MySQL ska använda ett täckande index (Using index ) så att raderna redan returneras i ordning från servern. Om de inte är det måste MySQL beställa dem efteråt, med hjälp av filesort.

Using temporary kan vara dåligt när det hänvisar till härledda tabeller eftersom de inte har index. Det verkar som att du uttryckligen har skapat en tillfällig tabell med index, så här är det inte dåligt. Ibland är ditt enda val att använda en härledd tabell, och därför Using temporary .




  1. Hur ansluter jag i java som SYS till Oracle?

  2. Hur inaktiverar jag tillfälligt triggers i PostgreSQL?

  3. MySQL InnoDB Cluster 8.0 - En komplett implementeringsgenomgång:del ett

  4. Formatera nummer med kommatecken i MariaDB