sql >> Databáze >  >> RDS >> Mysql

Jak optimalizovat dotazy MySQL na základě plánu EXPLAIN

Záleží na tom, co chcete a jaký je dotaz.

Obecně platí, že pro každý řádek v EXPLAIN, který má Using where , musíte jej mít pomocí indexu (possible keys a keys sloupec). Toto jsou vaše filtry a zahrnují WHERE a ON. S nápisem Using index je ještě lepší. Znamená to, že existuje krycí index a MySQL může načíst data přímo z indexu, místo aby navštěvoval řádek v datech tabulky.

Řádky, kde není Using where , a vrací velký počet řádků, je třeba se podívat na. Toto jsou vrácené hodnoty pro všechny řádky v tabulce. Nevím, jaký je váš dotaz, takže nevím, zda se zde obávat. Zkuste sadu výsledků filtrovat, abyste zmenšili velikost a zlepšili výkon.

Obecně byste se měli snažit vyhnout se zobrazení Using filesort nebo Using temporary , i když ty jsou špatné, pouze pokud je nečekáte.

Třídění souborů se obvykle objevuje s klauzulí ORDER. Obecně chcete, aby MySQL používal krycí index (Using index ), aby se řádky ze serveru vrátily již v pořádku. Pokud nejsou, musí je MySQL objednat později pomocí řazení souborů.

Using temporary může být špatné, když odkazuje na odvozené tabulky, protože nemají indexy. Zdá se, že jste explicitně vytvořili dočasnou tabulku s indexy, takže tady to není špatné. Někdy je vaší jedinou možností použití odvozené tabulky, a proto Using temporary .




  1. Škodlivé, všudypřítomné mýty o výkonu serveru SQL

  2. ORACLE Connect by klauzule ekvivalentní v SQL Server

  3. Zobrazovat názvy všech omezení pro tabulku v Oracle SQL

  4. SQL Server vložit, pokud neexistuje, osvědčený postup