Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Skuteczne ustalanie, czy firma jest otwarta, czy nie, na podstawie godzin pracy sklepu

Jeśli chcesz tylko spojrzeć na pojedynczy tydzień na raz, możesz kanonizować wszystkie godziny otwarcia/zamknięcia, aby ustawić liczbę minut od początku tygodnia, powiedzmy niedziela 0 godz. Dla każdego sklepu tworzysz pewną liczbę krotek w postaci [czas rozpoczęcia, czas zakończenia, identyfikator sklepu]. (W przypadku godzin, które obejmowały północ w niedzielę, musiałbyś utworzyć dwie krotki, jedną biegnącą do końca tygodnia, a drugą rozpoczynającą się na początku tygodnia). Ten zestaw krotek byłby indeksowany (powiedzmy, z drzewem, które chcesz wstępnie przetworzyć) zarówno w startTime, jak i endTime. Krotki nie powinny być tak duże:tygodniowo jest tylko około 10 000 minut, co może zmieścić się w 2 bajtach. Ta struktura byłaby wdzięczna w tabeli MySQL z odpowiednimi indeksami i byłaby bardzo odporna na ciągłe wstawianie i usuwanie rekordów w miarę zmiany informacji. Twoje zapytanie będzie po prostu „wybierz identyfikator sklepu, gdzie startTime <=czas i endtime>=czas”, gdzie czas to kanoniczne minuty od północy w niedzielę.

Jeśli informacje nie zmieniają się zbyt często i chcesz, aby wyszukiwania były bardzo szybkie, możesz rozwiązać wszystkie możliwe zapytania z góry i buforować wyniki. Na przykład w tygodniu są tylko 672 okresy kwadransowe. Mając listę firm, z których każda miała listę godzin otwarcia i zamknięcia, taką jak rozwiązanie Brandona Rhodesa, możesz po prostu iterować co 15 minut w ciągu tygodnia, dowiedzieć się, kto jest otwarty, a następnie zapisać odpowiedź w tabeli wyszukiwania lub lista w pamięci.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Korzystanie z relacyjnych baz danych MySQL w Fedorze 20

  2. Jak ustawić zestaw znaków i sortowanie tabeli w MySQL?

  3. Jak zabezpieczyć MySQL:część druga

  4. Kiedy i dlaczego używać mysqli_fetch_row, mysqli_fetch_object, mysqli_fetch_assoc, mysqli_fetch_array

  5. Ograniczanie równoległego/jednoczesnego pobierania — jak sprawdzić, czy pobieranie zostało anulowane?