Mysql
 sql >> Base de données >  >> RDS >> Mysql

Compter l'enregistrement des critères de recherche en fonction de la recherche effectuée par l'utilisateur (MYSQL PHP)

J'ai déjà essayé de le faire auparavant, et cela peut devenir très lent en fonction du nombre de filtres que vous autorisez et du nombre d'hôtels que vous répertoriez, sans parler de la façon dont vous gérez les hôtels en double.

En fin de compte, vous aurez très peu d'options de filtrage

  • Type de propriété :normalisez-le dans un tableau séparé
  • Chambres :stockez ceci en tant que tinyint ou smallint (soit non signé), je ne peux pas imaginer qu'il y ait des propriétés au-dessus de 255 chambres, et certainement pas au-dessus de 65 000 
  • Emplacement :normalisez-le dans un tableau séparé, idéalement sous forme d'arborescence pour vous assurer que les relations sont notées
  • Classement par étoiles :cela peut être stocké sous la forme d'un tinyint non signé

Maintenant, votre problème ici est que si quelqu'un applique un filtre pour 3 chambres à coucher vers le haut, vous devriez toujours obtenir des valeurs pour 2 chambres, 1 chambre, car changer le filtre à cela donnera des résultats.

À la fin de la journée, j'ai résolu ce problème en utilisant une très grande table de mémoire, une logique pour créer des instructions WHERE et JOIN, et une requête individuelle comptant les enregistrements dans un groupement d'ensembles. C'était pour faire la même chose que les résultats de recherche de vacances des utilisateurs, et en tant que telles, les données étaient considérées comme entièrement transitoires. Pour vos besoins, une table de mémoire beaucoup plus petite est susceptible d'être acceptable, mais le principe est similaire.