Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Wyszukiwanie LIKE mysql duża tabela
tabbi
post
Post #1





Grupa: Zarejestrowani
Postów: 150
Pomógł: 3
Dołączył: 30.10.2010

Ostrzeżenie: (0%)
-----


Witam,

chce w czasie rzeczywistym wyszukiwać rekord w tabeli z 4 mln rekordów. Do tego stosuje LIKE jednak zapytanie trwa koło 10 sekund i zazwyczaj przekracza dopuszczalną pamięć.

Struktura tabeli:
id int(10) UNSIGNED AUTO_INCREMENT
id_group int(11) UNSIGNED
name varchar(145) utf8_general_ci
code varchar(45) utf8_general_ci
car varchar(145) utf8_general_ci

Mam indeksy typu BTREE na name,code,id_group

Czy da radę to przyspieszyć ? Niestety brak unikatowych rekordów.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Popieram @up

MATCH AGAINST powinno być szybsze i skuteczniejsze.

Daj indeks FULLTEXT na 3 polach - name, code i car

Następnie użyj polecenia typu:

  1. SELECT
  2. *,
  3. MATCH (name,code,car) AGAINST ('to czego szukam' IN BOOLEAN MODE) AS score
  4. FROM
  5. tabela
  6. WHERE
  7. MATCH (name,code,car) AGAINST ('to czego szukam' IN BOOLEAN MODE)
  8. ORDER BY
  9. score DESC


W ten sposób uzyskasz (prawdopodobnie) o wiele szybsze wyszukiwanie + uporządkowanie (sortowanie) od najwlepszych trafień (trafności)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 27.12.2025 - 13:09