我正在开发一个在线预订系统,人们可以在其中根据一天中特定时间的可用性预订物品。为此,我使用了两个表 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());
我正在使用上述查询来显示特定类别下的所有项目,其中包含用户可以在特定日期预订的免费时间段。
预留表中的插槽字段包含字符串(例如: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 表示可用。
项目表中的可用性显示该项目是否可供预订(可能因维修而停机)。
首先我的表结构很好?其次优化我的查询(多列索引等)的最佳方法是什么。
谢谢,
拉维。