Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: FullText index
Forum PHP.pl > Forum > Bazy danych
armon
Witam,

Według http://dev.mysql.com/doc/refman/5.1/en/ful...#function_match

aby korzystać w ogóle z FULLtext index musze korzystać z funkcji MATCH.

Rozumiem, że nadanie indeksu fulltext w bazie danych i korzystanie dalej z WHERE / LIKE etc. nie przynosi żadnych innych pozytywnych skutków w przyspieszeniu poszukiwań? Czy jest sens stosowania fulltext index bez funkcji match?

Pytam się bo chce być tego w 100% pewny.

Pozdrawiam
wookieb
FULLTEXT index służy tylko i wyłącznie dla MATCH. Innych elementów wykorzystujących FULLTEXT nie ma.
armon
Cytat(wookieb @ 14.09.2011, 13:51:39 ) *
FULLTEXT index służy tylko i wyłącznie dla MATCH. Innych elementów wykorzystujących FULLTEXT nie ma.


Dzięki za potwierdzenie mojej tezy smile.gif

Swoją drogą znacie może jakieś ciekawe porównania szybkości wykonywania zapytań z LIKE / WHERE i FULLTEXT w zależności od szukanej frazy / konstrukcji bazy / ilości danych?
wookieb
Fulltext prawie zawsze będzie szybszy od LIKE (jeżeli szukasz w środku tekstu). Dodatkowo ma większe możliwości (poziom dopasowania itd).
armon
Cytat(wookieb @ 14.09.2011, 14:30:09 ) *
Fulltext prawie zawsze będzie szybszy od LIKE (jeżeli szukasz w środku tekstu). Dodatkowo ma większe możliwości (poziom dopasowania itd).


Czyli jeśli w mojej bazie jakieś pole (skonstruowane ze znaków) jest często wyszukiwane, ale rzadko aktualizowane (zmieniane), a chcę zastosować pobieranie dosłowne (WHERE) to najlepiej nadać polu indeks: INDEX albo UNIQE albo PRIMARY KEY.

Natomiast jeśli chcę wyszukiwać coś ze środka to najlepiej zastosować FULLTEXT INDEX, a następnie funkcję MATCH.

Dobrze to rozumiem ? smile.gif
wookieb
Po części TAK. Ale co za różnica czy pole jest często zmieniane czy nie?
armon
Cytat(wookieb @ 14.09.2011, 14:41:39 ) *
Po części TAK. Ale co za różnica czy pole jest często zmieniane czy nie?

"INSERT and UPDATE statements takes more time on tables having indexes where as SELECT statements become fast on those tables. The reason is that while doing insert or update, database need to insert or update index values as well."
wookieb
Tak ale przyrost czasu potrzebny do przebudowania indeksu jest zależny od ilości rekordów w tabeli. Dla małych tabel nie odczujesz dużej różnicy.
Jak konstruujesz wyszukiwarką dla swojego systemu czy coś podobnego to FULLTEXT i tak w większości przypadków da radę. Na nic Ci się zda kombinowanie z zapisywaniem pojedynczych słów w oddzielnej tabeli czy coś.
Najpierw poznaj dokładną zasadę działania FULLTEXT-u a będziesz wiedział kiedy go użyć a kiedy nie.
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.