我有restaurants
带有结构的表格,id, name, table_count
和带有结构的表格。我想找到那些在某些日期范围内可用的表格 - 如果可用 - 考虑到那些,要么没有订单,要么给定日期范围内确认的预订数量(状态 = 1)小于表格数量算上那家餐厅。所以,我使用这个查询orders
restaruant_id, start_date, end_date, status
SELECT r.id, r.name, r.table_count
FROM restaurants r
LEFT JOIN orders o
ON r.id = o.restaurant_id
WHERE o.id IS NULL
OR (r.table_count > (SELECT COUNT(*)
FROM orders o2
WHERE o2.restaurant_id = r.id AND o2.status = 1 AND
NOT(o.start_date >= '2013-09-10') AND NOT (o.end_date <= '2013-09-05')
)
)
那么,我能否以其他更快的方式进行相同的查询。我是这样想的,因为在时间期间,订单表中可能有数千行或更多行,并且因为它应该比较日期列在某个日期范围之间,如果我添加一列is_search
(使用 mysql index) 值为 1 或 0,可以通过 cron 作业更新,定期检查并从过去预订为 0,因此在搜索时,比较日期范围时只会考虑现在或未来的订单(其中我认为比为 1 或 0 比较 tinyint 列要贵得多)。或者,添加该条件会增加一件事要检查,它会产生相反的效果?
谢谢