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

Policz rekord kryteriów wyszukiwania na podstawie wyszukiwania wykonanego przez użytkownika (MYSQL PHP)

Próbowałem to zrobić wcześniej i może to działać bardzo wolno w zależności od liczby dozwolonych filtrów i liczby hoteli, które umieszczasz, nie wspominając o tym, jak radzisz sobie z duplikatami hoteli.

Ostatecznie jednak będziesz mieć bardzo mało opcji filtrowania

  • Typ właściwości:znormalizuj to w osobnej tabeli
  • Sypialnie:zapisz to jako maleńkie lub małe (niepodpisane), nie wyobrażaj sobie, że istnieją nieruchomości powyżej 255 sypialni, a na pewno nie powyżej 65 tys.
  • Lokalizacja:znormalizuj to w osobnej tabeli, najlepiej w formacie drzewa, aby zapewnić odnotowanie relacji
  • Ocena w postaci gwiazdek:może być przechowywana jako tinyint unsigned

Teraz twój problem polega na tym, że jeśli ktoś zastosuje filtr dla 3 sypialni w górę, nadal powinieneś otrzymywać wartości dla 2 sypialni i 1 sypialni, ponieważ zmiana filtra z powrotem na ten przyniesie rezultaty.

Pod koniec dnia rozwiązałem ten problem, używając bardzo dużej tabeli pamięci, pewnej logiki do budowania instrukcji WHERE i JOIN oraz indywidualnego zapytania zliczającego rekordy w ramach grupowania zestawu. Miało to jednak na celu zrobienie podobnych wyników wyszukiwania dla użytkowników z wakacji i jako takie dane uznano za całkowicie nietrwałe. Dla twoich celów prawdopodobnie akceptowalna będzie znacznie mniejsza tablica pamięci, jednak zasada jest podobna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Różnica między lewym sprzężeniem a lewym sprzężeniem zewnętrznym

  2. Pobieranie liczby wierszy z określoną wartością po przefiltrowaniu zapytania przez selektor daty

  3. Wyszukiwanie pełnotekstowe MySQL w wielu tabelach

  4. Jak profilować MySQL

  5. Dane wejściowe użytkownika, wyczyść i odkaż przed wysłaniem do db