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 (1 - 3)
wizu
post
Post #2





Grupa: Zarejestrowani
Postów: 127
Pomógł: 15
Dołączył: 16.02.2008
Skąd: Sanok

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


Jeśli wyszukujesz w taki sposób:
  1. LIKE %search%

To zastanów się, czy nie możesz zrezygnować z pierwszego %. Wyszukiwanie LIKE search%, korzysta z indeksów, natomiast LIKE %search% już nie.

Próbowałeś z indexem FULLTEXT i MATCH() AGAINST()? Również powinno całkiem nieźle poprawić szybkość wyszukiwania.

Podaj jakiś przykład danych z których wyszukujesz i kolumnę po której szukasz.

Ten post edytował wizu 18.01.2012, 01:43:48
Go to the top of the page
+Quote Post
Sephirus
post
Post #3





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
gothye
post
Post #4





Grupa: Zarejestrowani
Postów: 702
Pomógł: 65
Dołączył: 16.03.2009

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


Jest jeszcze sphinx , ostatnio zastosowałem go do bazy z ilością rekordów 10mln. ,rekordy podczas wyszukiwania są zwracane w czasie poniżej 0.001s
Go to the top of the page
+Quote Post

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: 24.12.2025 - 11:59