Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menentukan secara efisien apakah bisnis buka atau tidak berdasarkan jam buka toko

Jika Anda hanya ingin melihat satu minggu pada satu waktu, Anda dapat mengkanonikalisasikan semua waktu buka/tutup untuk menetapkan jumlah menit sejak awal minggu, misalnya Minggu 0 jam. Untuk setiap toko, Anda membuat sejumlah tupel dalam bentuk [startTime, endTime, storeId]. (Untuk jam yang berlangsung Minggu tengah malam, Anda harus membuat dua tupel, satu sampai akhir minggu, satu mulai awal minggu). Kumpulan tupel ini akan diindeks (misalnya, dengan pohon yang akan Anda proses sebelumnya) pada startTime dan endTime. Tuple tidak boleh terlalu besar:hanya ada ~10k menit dalam seminggu, yang dapat memuat 2 byte. Struktur ini akan anggun di dalam tabel MySQL dengan indeks yang sesuai, dan akan sangat tahan terhadap penyisipan &penghapusan catatan yang konstan saat informasi berubah. Kueri Anda hanyalah "select storeId where startTime <=time and endtime>=time", di mana waktu adalah menit kanonik sejak tengah malam pada hari Minggu.

Jika informasi tidak terlalu sering berubah, dan Anda ingin melakukan pencarian dengan sangat cepat, Anda dapat menyelesaikan setiap kueri yang mungkin di awal dan menyimpan hasilnya dalam cache. Misalnya, hanya ada 672 periode seperempat jam dalam seminggu. Dengan daftar bisnis, yang masing-masing memiliki daftar waktu buka &tutup seperti solusi Brandon Rhodes, Anda dapat dengan mudah, mengulangi setiap periode 15 menit dalam seminggu, mencari tahu siapa yang buka, lalu menyimpan jawabannya di tabel pencarian atau daftar dalam memori.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa konektor mysql putus (Koneksi terputus ke server MySQL selama kesalahan kueri)

  2. SQL Injection dan klausa LIMIT

  3. Pengoptimalan kueri penggunaan indeks MySQL

  4. MYSQLI - DI MANA DALAM array

  5. Bagaimana cara saya mencari dari bidang serialisasi di database mysql?