![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zamierzam teraz zrobić wyszukiwarkę do artykułów.
Chciałbym zrobić ją dość rozbudowaną - możliwość wyszukiwania wg. nazwy, opisu, treści, daty dodania z pewnego przedziału, daty ostatniej modyfikacji z pewnego przedziału, nicku dodającego itp. No więc zacząłem szukać informacji o tym, jak utworzyć indeksy dla takiego wyszukiwania i natrafiłem na to: http://www.kacka.pl/index.php?showtopic=132 Sporo tych indeksów dodał... Weźmy pod uwagę, że nie zawsze użytkownik wypełni wszystkie pola wyszukiwarki bo np. chce wyszukać tylko w nazwie, a innym razem w treści, a jeszcze innym razem w nazwie i treści. Czy do stworzenia takiej wyszukiwarki konieczne będzie dodanie aż tylu indeksów? Tabela:
Pola oznaczone "-- *" to pola wg. których chcę umożliwić wyszukiwanie. Dodatkowo wyszukiwarka będzie ograniczać wyniki wyszukiwania do artykułów o pewnym statusie. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Jeżeli chcesz w danej kolumnie robić wyszukiwanie pełnotekstowe, to musisz mieć na niej index FULLTEXT. Po prostu.
Osobną sprawą jest, czy warto to robić dla kolumny VARCHAR(64) W takim wypadku lepeij będzie się raczej sprawdzało LIKE |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 124 Pomógł: 1 Dołączył: 13.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat("Mchl") Jeżeli chcesz w danej kolumnie robić wyszukiwanie pełnotekstowe, to musisz mieć na niej index FULLTEXT. Po prostu. Tak tak, wiem o tym. Ale wciąż nie wiem jak zrobić te indeksy - czy wystarczy po jednym na pole czy porobić też dodatkowo indeksy łączone tzn. jeden na kilka pól? A może tylko te ostatnie? Te ostatnie się chyba nazywają "kompozytowe". I co do LIKE - kiedyś wyczytałem, że lepiej jest robić to na REGEXP - co jest prawdą? Które będzie szybsze? Ten post edytował Walian 22.02.2010, 09:25:42 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 855 Pomógł: 145 Dołączył: 17.07.2008 Skąd: High Memory Area Ostrzeżenie: (0%) ![]() ![]() |
Oczywiście możesz zrobić indeks na kilku kolumnach, tylko że wtedy musisz zawsze szukać AGAINST wszystkich kolumn w tym indeksie. Tak więc jeżeli ważne jest dla Ciebie żeby użytkownik mógł szukać po konkretnej kolumnie, to musisz mieć dla tej kolumny osobny indeks.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 16.07.2025 - 09:35 |