Nie można użyć zwykłego indeksowania do ulepszenia tego zapytania. Indeksy MySQL to B-drzewa, co oznacza, że mogą bardzo szybko znaleźć prefiks indeksowanej kolumny. Ale odkąd Twój LIKE
zapytanie ma %
na początku nie ma unikalnego prefiksu do wyszukania. Dlatego każdy wiersz musi zostać zeskanowany, aby dopasować go do wzorca.
Jednak MySQL obsługuje również wyszukiwanie pełnotekstowe. Tworzy to indeks wszystkich słów w kolumnie i może je szybko znaleźć. Zobacz dokumentację po szczegóły.
Jeśli używasz LIMIT 10
, przestanie skanować, gdy tylko znajdzie pierwszych 10 wierszy spełniających warunki. Chyba że używasz również ORDER BY
-- następnie musi znaleźć wszystkie wiersze, aby móc je posortować przed wybraniem pierwszych 10.