sql >> Base de Datos >  >> RDS >> Mysql

Cuente el registro de criterios de búsqueda basado en la búsqueda realizada por el usuario (MYSQL PHP)

He intentado hacer esto antes, y puede volverse muy lento dependiendo de cuántos filtros permita y cuántos hoteles enumere, sin mencionar cómo maneja los hoteles duplicados.

En última instancia, tendrá muy pocas opciones de filtro

  • Tipo de propiedad:normalice esto en una tabla separada
  • Dormitorios:guarde esto como tinyint o smallint (ya sea sin firmar), no puedo imaginar que haya propiedades por encima de 255 dormitorios, y definitivamente no por encima de 65k
  • Ubicación:normalice esto en una tabla separada, idealmente en un formato de árbol para garantizar que se anoten las relaciones
  • Calificación con estrellas:esto se puede almacenar como un tinyint sin firmar

Ahora, su problema aquí es que si alguien aplica un filtro para 3 dormitorios en adelante, aún debería obtener valores para 2 dormitorios, 1 dormitorio, ya que cambiar el filtro de nuevo a eso dará resultados.

Al final del día, abordé esto usando una tabla de memoria muy grande, algo de lógica para construir declaraciones WHERE y JOIN, y una consulta individual que cuenta registros dentro de una agrupación establecida. Sin embargo, esto fue para hacer resultados de búsqueda de vacaciones similares a los de los usuarios y, como tal, los datos se consideraron completamente transitorios. Para sus propósitos, es probable que sea aceptable una tabla de memoria mucho más pequeña, sin embargo, el principio es similar.