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

Optimalizace indexu tabulky MySQL

Užitečný by byl index ve sloupci časového razítka a ID uživatele. Musíte být schopni číst výstup příkazu EXPLAIN.

Přejděte do MySQL a proveďte následující:

EXPLAIN SELECT timestamp, username, [a few more] FROM log 
WHERE timestamp  BETWEEN '2012-03-30 08:00:00' AND '2012-03-30 16:00:00' 
AND username='XX' 

To vám ukáže plán, který MySQL používá k provedení dotazu. Bude sloupec s názvem klíč. To ukazuje, jaký index používá MySQL v dotazu. Mám podezření, že tam uvidíte VŠECHNO, což znamená, že MySQL prohledává tabulku shora dolů a shoduje se v každém řádku s vaší klauzulí where. Nyní vytvořte index ve sloupcích časové razítko a ID uživatele. Spusťte znovu příkaz EXPLAIN. Ve sloupci klíče byste měli vidět index, který jste vytvořili.

Pokud MySQL používá index, pak by váš dotaz měl být podstatně rychlejší. Jen pamatujte, že nepřekračujte index. Indexy zpomalují vkládání, aktualizace a mazání. Když vložíte nový řádek do tabulky a v tabulce jsou tři indexy, nový řádek musí zapsat 3 hodnoty do tří různých indexů. Je to tedy dvousečný meč.




  1. Vytvoření licenčního systému

  2. Výjimka Postgres:Dotaz nevrátil žádné výsledky.

  3. Povolit jiné znaky než ASCII v databázi MySQL

  4. MySQL:Počet záznamů s po sobě jdoucími měsíci