Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][JavaScript] Które z rozwiązań autosuggesta będzie wydajniejsze ?
jajcarzd1
post
Post #1





Grupa: Zarejestrowani
Postów: 215
Pomógł: 19
Dołączył: 24.12.2003
Skąd: Przemyśl

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


Witam

Mam takie pytanie. Otóż wykorzystuję jednego z pluginów jQuery jako autosuggesta. Przykład ze strony tego plugina jes oparty na rozwiązaniu pobrania wszystkich rekordów z danej tabeli a następnie przelecenie po nich w pętli szukjąc za pomoca strpos co akurat u mnie w skrócie wyglądało by tak:

  1. <?php
  2. $documents = $classDocuments->dbGetDocuments();
  3. foreach ($documents as $item) {
  4.            if (strpos(strtolower($item['nr']), $searchPhrase) !== false or strpos(strtolower($item['title']), $searchPhrase) !== false) {
  5.                $response[] = array("id"=>$item['iddocuments'],"nr"=>$item['nr'],"title"=>$item['title']);
  6.            }
  7.        }
  8.        
  9.        header('Content-type: application/json');
  10.        echo json_encode($response);
  11. ?>


przeszukuję po dwóch polach: po numerze i tytule.

Więc to jest pierwsze rozwiązanie. Natomiast ja bardziej się skłaniam do wyszukania odpowiadających fraz już przez samo zapytanie bazy czyli rozwiązanie jak poniżej w metodzie dbGetDocuments().

  1. <?php
  2. ...... "d.nr like '%".$search['search_phrase']."%' or d.title like '%".$search['search_phrase']."%'" ......
  3. ?>


No i teraz pytanie któro z rozwiązań może być wydajniejsze. Zakładamy że baza to mysql, ilość rekordów tudno orzec ale załózmy np do 5000, oba pola typu varchar pewnie indeksowane, typ normal, wyszukwianie możliwe po wpisaniu przynajmniej jednej litery.

Będe wdzięczny za sugestie

No i co nikt mi nic nie podpowie w tym temacie ?


--------------------
My mind is glowing ...
Jeśli pomogłem push the button :)
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 19.08.2025 - 15:43