Paweł G.

Paweł G. Managing Director

Temat: Autouzupełnianie - najlepsze praktyki

Bardzo często AJAX ma zastosowanie do wyświetlania podpowiedzi na podstawie wpisanych pierwszych liter w formularzach.

Przeważnie sytuacja wygląda tak, że mamy jakieś nazwy w tabeli i po wpisaniu pierwszych znaków przez użytkownika przeszukujemy bazę i wyświetlamy nazwy, które zaczynają się na dany ciąg znaków.

Przy małej tabeli z nazwami taki schemat działa bardzo dobrze. Jednak problemy pojawiają się przy większej ilości rekordów, kiedy wydajność takie skryptu istotnie maleje.

Przy bezpośrednim przeszukiwaniu dużej tabeli bazy MySQL zapytanie może być dosyć wolne.

Dlatego próbuję także rozwiązania z zapisywaniem nazw do pliku i odczytywaniem nazw z niego podczas uzupełniania. Działa to trochę szybciej, niż bezpośrednie pobieranie z bazy, ale wciąż trochę wolno.

W swoich skryptach stosuję również bufor, który przez określoną część sekundy nie wywołuje zapytania do serwera. Jest to bardzo pomocne, ponieważ nie powoduje wysyłania zapytania po każdym wpisywanym znaku, kiedy są one wpisywanie bardzo szybko.

Chciałbym się zapytać praktyków, jak Wy to robicie? Chodzi mi o sam schemat działania takiego mechanizmu. Gdzie tutaj jest wąskie gardło?

konto usunięte

Temat: Autouzupełnianie - najlepsze praktyki

Paweł G.:
Gdzie tutaj jest wąskie gardło?

waskim gardlem jest BD.
1. laczenie sie
2. LIKE % w zapytaniu

jezeli juz trzeba by opierac to na WIELKICH strukturach bazy danych to ja bym zapedzil do tego wewnetrzny mechanizm BD do latania po stringach.

jezeli nie trzeba latach po pelnej bazie to mozna latac po szukanych wczesniej wynikach lub stworzyc osobna tablice ze slowami kluczowymi, ktore mozna zaserwowac podpowiadaczce (a tablice wygenerowac na podstawie tej WIELKIEJ struktury).

konto usunięte

Temat: Autouzupełnianie - najlepsze praktyki

Bufor pamięciowy - na ogół już po wpisaniu kilku znaków ilość pasujących pozycji jest niewielka.
Dla dużych zbiorów być może lepiej jest wstrzymać się z zapytaniem do wpisania 2-3 liter

Następna dyskusja:

autouzupełnianie




Wyślij zaproszenie do