Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyszukiwanie tekstu w dużej tabeli - wydajnosć
Forum PHP.pl > Forum > Bazy danych > MySQL
raczkowski1
Witam
Mam problem z powolnym wyszukiwaniem tekstu w tabeli.
Moja tabela zawiera dwie kolumny tekstowe zawierające słowa kluczowe. Przy około 60 tyś. rekordów długo wyszukiwałem dane. Użyłem więc FULL TEXT INDEX co przyspieszyło wyszukiwanie, niestety przy liczbie rekordów około 170 tyś. znowu odczuwam spowolnienie zwracania wyników.
  1. SELECT DISTINCT c.`name` AS `nazwa`,c.`id` AS `cid`, `region`, `logo`,`keywords`,w.`name` AS `wojewodztwo`,`Segment`
  2. FROM `secofclient` soc
  3. LEFT JOIN `clients` c ON c.`id`=soc.`client`
  4. LEFT JOIN `wojewodztwa` w ON c.`region`=w.`id`
  5. WHERE (`section`='317' OR match(`keywords`) AGAINST ('Domy Kultury' )) AND
  6. c.`time`>=1379271427 ORDER BY c.`name` ASC LIMIT 0,20
  7. Time sql a = 1.28 secs


Działam na MySQL 5.5.31 i się zastanawiam czy nie przejść na postgresql więc pytanie co radzicie?? może są jakieś inne rozwiązania.

Pozdrawiam
Dario
mmmmmmm
Pracuję i na MySQL i na postgreSQL. I do takich zapytań zdecydowanie polecam tę drugą bazę. Z moich obserwacji wynika że post zwalnia przy ok. 100 mln rekordów (tabela wielkości rzędu 10 Gb).
Aby przyśpieszyć możesz spróbować:
- wywalić LEFT
- wywalic OR (może przenieść do JOIN)
- wywalic ORDER
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.