Saya sudah mencoba melakukan ini sebelumnya, dan itu bisa menjadi sangat lambat tergantung pada berapa banyak filter yang Anda izinkan dan berapa banyak hotel yang Anda daftarkan, belum lagi bagaimana Anda menangani hotel duplikat.
Meskipun pada akhirnya Anda hanya memiliki sedikit opsi filter
- Jenis properti :normalkan ini di tabel terpisah
- Bedrooms :simpan ini sebagai tinyint atau smallint (entah unsigned), tidak bisa membayangkan ada properti di atas 255 kamar tidur, dan jelas tidak di atas 65k
- Location :menormalkan ini dalam tabel terpisah, idealnya dalam format pohon untuk memastikan hubungan dicatat
- Peringkat bintang :ini dapat disimpan sebagai tinyint unsigned
Sekarang masalah Anda di sini adalah jika seseorang menerapkan filter untuk 3 kamar tidur ke atas, Anda masih harus mendapatkan nilai untuk 2 kamar tidur, 1 kamar tidur, karena mengubah filter kembali ke itu akan memberikan hasil.
Pada akhirnya saya membahas ini menggunakan tabel memori yang sangat besar, beberapa logika untuk membangun pernyataan WHERE dan JOIN, dan kueri individu menghitung catatan dalam pengelompokan yang ditetapkan. Ini adalah untuk melakukan serupa dengan hasil pencarian liburan pengguna, dan karena itu data dianggap sepenuhnya sementara. Untuk tujuan Anda, tabel memori yang jauh lebih kecil mungkin dapat diterima, namun prinsipnya serupa.