`slot` (
`time` DATETIME PRIMARY KEY,
`booking_count` INT
);
`booking` (
`booking_id` INT PRIMARY KEY
`user_id` INT,
`start_time` DATETIME,
`end_time` DATETIME
);
и транзакцию с захватом таблиц при добавлении брони. LIMIT {[offset,] row_count | row_count OFFSET offset}
`date` < CONVERT(UNIX_TIMESTAMP(), SIGNED)
попадёт 50% строк, а значит проще перебрать все строки, чем читать в одном месте индекс, в другом строки, на которые он ссылается. `date` < UNIX_TIMESTAMP() - 23328000