Prawdopodobnie wszyscy administratorzy MySQL widzieli w swoich slowlogach zapytania typu:
SELECT id, to, to, tamto, opis FROM produkt WHERE opis LIKE '%znakomity%' AND opis LIKE '%genialny%' ORDER BY id ASC;
Zapytania tego typu potrafią się wykonywać bardzo długo, szczególnie gdy zawartość bazy jest spora. Nie korzystają też z indeksów, co jest akurat oczywiste. Aby zadziałał indeks typu BTREE, z lewej strony nie może występować wildcard. Możemy szukać pól zaczynających się w jakiś sposób: WHERE opis LIKE ‚genialny%’, ale wyrazu w środku zdania przy pomocy indeksu nie znajdziemy. Co można zrobić, aby przyspieszyć działanie takich zapytań?
czytaj dalej…