一日の特定の時間帯の空き状況に応じて商品を予約できるオンライン予約システムを開発しています。そのために私は2つのテーブルを使用しています1.アイテム2.予約
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:1:1:1:0:0:0:0:0: 0:0:0:0)ここで、1は時間が予約されていることを意味し、0は利用可能であることを意味します。
アイテムテーブルの可用性は、アイテムが予約可能かどうかを示します(サービスのためにダウンしている可能性があります)。
まず第一に、私のテーブル構造は素晴らしいですか?第二に、私のクエリを最適化するための最良の方法は何ですか(複数列のインデックス作成など)。
ありがとう、
ラヴィ。