Mysql
 sql >> Baza danych >  >> RDS >> Mysql

jak zaimplementować skuteczny algorytm wyszukiwania przy użyciu php i bazy danych mysql?

Kilka różnych sposobów na zrobienie tego:

Szybszy (pod względem wydajności) to:select * FROM Table where keyword LIKE '%value%' Sztuczka w tym polega na umieszczeniu %, który jest symbolem wieloznacznym, mówiącym, że przeszukaj wszystko, co kończy się lub zaczyna od tej wartości.

Bardziej elastyczną, ale (nieco) wolniejszą może być funkcja REGEXP:

Select * FROM Table WHERE keyword REGEXP 'value'

Jest to wykorzystanie mocy wyrażeń regularnych, dzięki czemu możesz uzyskać tak rozbudowane, jak chcesz. Jednak pozostawienie tego, co powyżej, daje coś w rodzaju „Google biednego człowieka”, dzięki czemu wyszukiwanie może być kawałkami i kawałkami ogólnych pól.

Przyklejona część pojawia się, gdy próbujesz wyszukać nazwiska. Na przykład, jeśli wyszukasz SMI, albo znajdziesz nazwę „kowal”. Jednak żaden z nich nie znalazłby słowa „Jon Smith”, gdyby było oddzielone pole imienia i nazwiska. Tak więc musiałbyś wykonać pewną konkatenację, aby wyszukać Jona LUB Smitha LUB Jona Smitha LUB Smitha, Jona. Stamtąd może naprawdę śnieżka.

Oczywiście, jeśli przeprowadzasz jakieś zaawansowane wyszukiwanie, musisz odpowiednio doprecyzować zapytanie. Na przykład, jeśli chcesz wyszukać adres jako pierwszy i ostatni, Twoje zapytanie będzie musiało zostać przetestowane dla każdego z nich:

SELECT * FROM table WHERE first LIKE '%value%' OR last LIKE '%value%' OR address LIKE '%value'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić kodowanie kolumn char w tabelach w django?

  2. Czy 'IS DISTINCT FROM' to prawdziwy operator MySQL?

  3. MYSQL Left Dołącz do ostatniego wiersza wyniku

  4. tworzenie unikalnych ślimaków tytułów strony php

  5. W jaki sposób podgrupy mogą mieć wygenerowaną kolumnę przyrostu dodaną w zapytaniu sql?