Odpovědi na vaše otázky:
-
Je
possible_keys
indexy, které může MySQL chtít použít, akeys
jsou indexy skutečně používány MySQL? Ano, je to správné. -
Proč je index
index_status_mit_spam
nepoužívá? V dotazu mají sloupce stejné pořadí jako v indexu. SQL používá statistiku indexů tabulky určit, který index použít. Pořadí polí v příkazu select NEMÁ ŽÁDNÝ účinek na jaký index použít. Statistiky kolem indexů zahrnují informace, jako je jedinečnost indexu a další věci. Pravděpodobně bude použito více jedinečných indexů. Přečtěte si o tom více zde:http ://dev.mysql.com/doc/innodb/1.1/en/innodb-other-changes-statistics-estimation.html nebo zde:http://dev.mysql .com/doc/refman/5.0/en//myisam-index-statistics.html . Tyto faktory určují, jak MySQL vybere jeden index použít. Bude používat pouze JEDEN index . -
Proč je index
index_datum
nepoužívá se proORDER BY
? MySQL během dotazu použije pouze jeden index, nikoli dva, protože použití druhého indexu dotaz ještě více zpomalí. Čtení indexu NENÍ čtení tabulky. To souvisí s provozní efektivitou dotazu. Zde jsou odpovědi, které mohou vysvětlit některé pojmy:https://dba.stackexchange.com/questions/18528/performance-difference-between-clustered-and-non-clustered-index/18531#18531 Nebo Přidání limitní klauzule do MySQL dotazu jej dramaticky zpomalí Nebo indexy MySQL a kdy seskupit je . Tyto odpovědi obsahují mnoho podrobností, které vám pomohou porozumět indexování MySQL. -
Jak mohu optimalizovat své tabulkové indexy nebo dotaz? (Výše uvedený dotaz potřebuje až 3 sekundy s přibližně milionem položek v tabulce). No, je tu souborový druh, který vás pravděpodobně zpomaluje. Je možné, že tabulka má příliš mnoho indexů a MySQL vybírá špatný.
Musíte pochopit, že indexy zrychlují čtení a zpomalují zápisy do tabulek. Takže pouhé přidávání indexů není vždy dobrý nápad. Výše uvedené odpovědi a odkazy by vám měly pomoci získat solidní porozumění.