Ke zlepšení tohoto dotazu nelze použít běžné indexování. Indexy MySQL jsou B-stromy, což znamená, že mohou velmi rychle najít prefix indexovaného sloupce. Ale protože vaše LIKE
dotaz má %
na začátku neexistuje žádná jedinečná předpona, kterou by bylo možné hledat. Takže každý řádek musí být naskenován, aby odpovídal vzoru.
MySQL však podporuje i fulltextové vyhledávání. To vytvoří rejstřík všech slov ve sloupci a dokáže tato slova rychle najít. Viz dokumentaci pro podrobnosti.
Pokud používáte LIMIT 10
, zastaví skenování, jakmile najde prvních 10 řádků, které splňují podmínky. Pokud nepoužijete také ORDER BY
-- pak musí najít všechny řádky, aby je mohl seřadit, než vybere prvních 10.