Я разрабатываю систему онлайн-бронирования, в которой люди могут бронировать товары в зависимости от их наличия на определенное время дня. Для этого я использую две таблицы 1.Item 2.Reservation
Item:(InnoDB)
-------------------------
id INT (PRIMARY)
category_id MEDIUMINT
name VARCHAR(20)
make VARCHAR(20)
availability ENUM('1','0')
Reservation:(InnoDB)
-------------------------
id INT (PRIMARY)
date DATE
Item_id INT
slot VARCHAR(50)
SELECT Item.id,Item.category,Item.make,Item.name,reservation.slot
FROM Item
INNER JOIN reservation ON Item.id=reservation.Item_id AND Item.category_id=2
AND Item.availability=1 AND reservation.date = DATE(NOW());
Я использую приведенный выше запрос для отображения всех элементов в определенной категории с бесплатными временными интервалами, которые пользователь может зарезервировать на определенную дату.
Поле slot в таблице резервирования содержит строку (пример: 0:1:1:1:0:0:0:0:0:0:0:0:1:1:1:0:0 :0:0:0:0:0:0:0), где 1 означает, что час зарезервирован, а 0 означает, что он доступен.
доступность в таблице элементов показывает, доступен ли этот элемент для резервирования или нет (может быть недоступен для обслуживания).
Во-первых, в порядке ли моя структура таблицы? Во-вторых, как лучше всего оптимизировать мой запрос (многостолбцовая индексация и т. д.).
спасибо,
Рави.