Nếu bạn muốn chỉ xem xét từng tuần một, bạn có thể chuẩn hóa tất cả thời gian mở / đóng cửa để được đặt số phút kể từ đầu tuần, chẳng hạn như 0 giờ Chủ nhật. Đối với mỗi cửa hàng, bạn tạo một số bộ giá trị có dạng [startTime, endTime, storeId]. (Đối với những giờ kéo dài đến nửa đêm Chủ Nhật, bạn phải tạo hai bộ giá trị, một bộ vào cuối tuần, một bộ bắt đầu vào đầu tuần). Tập hợp các bộ giá trị này sẽ được lập chỉ mục (giả sử, với một cây bạn sẽ xử lý trước) trên cả startTime và endTime. Các bộ giá trị không nên lớn như vậy:chỉ có ~ 10k phút trong một tuần, có thể vừa với 2 byte. Cấu trúc này sẽ rất duyên dáng bên trong một bảng MySQL với các chỉ mục thích hợp và sẽ rất linh hoạt đối với việc liên tục chèn và xóa các bản ghi khi thông tin thay đổi. Truy vấn của bạn chỉ đơn giản là "select storeId where startTime <=time and endtime> =time", trong đó thời gian là phút được chuẩn hóa kể từ nửa đêm chủ nhật.
Nếu thông tin không thay đổi thường xuyên và bạn muốn tra cứu thật nhanh, bạn có thể giải quyết mọi truy vấn có thể có từ trước và lưu kết quả vào bộ nhớ cache. Ví dụ, chỉ có 672 khoảng thời gian 1/4 giờ trong một tuần. Với danh sách các doanh nghiệp, mỗi doanh nghiệp đều có danh sách thời gian mở cửa và đóng cửa như giải pháp của Brandon Rhodes, bạn có thể chỉ cần lặp lại mỗi khoảng thời gian 15 phút trong một tuần, tìm ra ai đang mở cửa, sau đó lưu trữ câu trả lời trong bảng tra cứu hoặc danh sách trong bộ nhớ.