Utilizarea LIKE '%expresia_cautata%' intoarce doar inregistrarile care contin exact expresia cautata. Aceasta cautare cam omoara serverul in cazul unor tabele cu multe inregistrari, pentru ca nu ai cum sa definesti un index in acest caz.
Cu a zis si Dever, se recomanda utilizarea MATCH() AGAINST(). Nu uita sa-ti setezi in acest caz un index FULLTEXT pe campurile pe care vei face cautarea:
Iata si un exemplu de query SQL, care ordoneaza rezultatele descrescator dupa relevanta:ALTER TABLE `nume_tabela` ADD FULLTEXT `nume_index` (
`nume_camp_1` ,
`nume_camp_2`
)
Probabil ca query-ul de mai sus mai poate fi optimizat, trebuie considerat doar un punct de pornire. Succes!SELECT *, MATCH (nume_camp_1, nume_camp_2) AGAINST ('expresia_cautata') AS relevanta
FROM nume_tabela WHERE MATCH (nume_camp_1, nume_camp_2) AGAINST ('expresia_cautata')
ORDER BY relevanta DESC LIMIT nr_maxim_rezultate



Răspunde cu citat