Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Suchkriteriendatensatz basierend auf der vom Benutzer durchgeführten Suche zählen (MYSQL PHP)

Ich habe das schon einmal versucht, und es kann sehr langsam werden, je nachdem, wie viele Filter Sie zulassen und wie viele Hotels Sie auflisten, ganz zu schweigen davon, wie Sie mit doppelten Hotels umgehen.

Letztendlich werden Sie jedoch nur sehr wenige Filteroptionen haben

  • Eigenschaftstyp:Normalisieren Sie dies in einer separaten Tabelle
  • Schlafzimmer:Speichern Sie dies als Tinyint oder Smallint (entweder ohne Vorzeichen), kann mir nicht vorstellen, dass es Objekte mit mehr als 255 Schlafzimmern und definitiv nicht mehr als 65.000 gibt
  • Ort :Normalisieren Sie dies in einer separaten Tabelle, idealerweise in einem Baumformat, um sicherzustellen, dass Beziehungen notiert werden
  • Sternebewertung :kann als Tinyint ohne Vorzeichen gespeichert werden

Ihr Problem hier ist nun, dass Sie, wenn jemand einen Filter für 3 Schlafzimmer aufwärts anwendet, immer noch Werte für 2 Schlafzimmer, 1 Schlafzimmer erhalten sollten, da eine Änderung des Filters wieder zu Ergebnissen führt.

Am Ende des Tages habe ich dies mit einer sehr großen Speichertabelle, etwas Logik zum Erstellen von WHERE- und JOIN-Anweisungen und einer einzelnen Abfrage, die Datensätze innerhalb einer Satzgruppierung hochzählt, angegangen. Dies geschah jedoch, um den Urlaubssuchergebnissen der Benutzer zu ähneln, und daher wurden die Daten als völlig vorübergehend angesehen. Für Ihre Zwecke ist wahrscheinlich eine viel kleinere Speichertabelle akzeptabel, das Prinzip ist jedoch ähnlich.