ID varchar(150) PK
kol1 varchar(255)
kol2 varchar(255)
kol3 varchar(255)
kol4 varchar(255)
kol5 varchar(255)
keywords(text) fulltext
kolumna keywords może zawierać od kilkunastu do kilkuset słów kluczowych.
robie wyszukiwanie pełnotekstowe:
"Select ID, kol1, kol2, kol3, kol4, kol5 from tabela where match(keywords) against ('"słowo1" +"słowo2" +"słowo3" -"słowo4"' in boolean mode) LIMIT 0, 30"
i tu dzięki użyciu limitu baza śmiga. Ale potrzebna jest mi także calkowita liczba rekordów z takiego zapytania:
"select count(ID) from tabela where match(keywords) against ('"słowo1" +"słowo2" +"słowo3" -"słowo4"' in boolean mode)"
i niestety ale to zapytanie w niektórych przypadkach trwa nawet kilka minut.
Przed updatem bazy kiedy miałem niecałe 200 tyś to drugie zapytanie działało bez zarzutu. A teraz zapytanie bez limitu do tej bazy raz trwa około 5 sek, raz 10 a czasmi kilka minut i nie mam pojęcia od czego to zależy.
Jak rozwiązać takie wyszukiwanie ? A może coś da się zrobić z samą bazą, w tej chwili mam plik konfiguracyjny my-large.ini a baza stoi razem z apache i php na PIV 3.GHz 1 GB RAM - po za tym żadne inne programy nie są uruchomione.