Regelmatige indexering kan niet worden gebruikt om die zoekopdracht te verbeteren. MySQL-indexen zijn B-trees, wat betekent dat ze heel snel een voorvoegsel van de geïndexeerde kolom kunnen vinden. Maar sinds je LIKE
zoekopdracht heeft %
in het begin is er geen uniek voorvoegsel om naar te zoeken. Dus elke rij moet worden gescand om overeen te komen met het patroon.
MySQL ondersteunt echter ook zoeken in volledige tekst. Dit creëert een index van alle woorden in de kolom en kan deze woorden snel vinden. Zie de documentatie voor details.
Als u LIMIT 10
. gebruikt , stopt het met scannen zodra het de eerste 10 rijen vindt die aan de voorwaarden voldoen. Tenzij je ook ORDER BY
. gebruikt -- dan moet het alle rijen vinden zodat het ze kan sorteren voordat het de eerste 10 selecteert.