Regelbunden indexering kan inte användas för att förbättra den frågan. MySQL-index är B-träd, vilket betyder att de kan hitta ett prefix för den indexerade kolumnen mycket snabbt. Men eftersom din LIKE
frågan har %
i början finns det inget unikt prefix att söka efter. Så varje rad måste skannas för att matcha mönstret.
Men MySQL stöder också fulltextsökning. Detta skapar ett index över alla ord i kolumnen, och det kan hitta dessa ord snabbt. Se dokumentationen för detaljer.
Om du använder LIMIT 10
, kommer den att sluta skanna så snart den hittar de första 10 raderna som uppfyller villkoren. Såvida du inte också använder ORDER BY
-- sedan måste den hitta alla rader så att den kan sortera dem innan den väljer de första 10.