单个查询的运行时间为10毫秒,使用UNION ALL则需要290毫秒以上的时间(MySQL DB记录为770万)。如何优化?
我有一个表,用于存储教师可用的约会,允许两种插入: 每小时收费:完全自由地每天为每位老师添加无限制的时间段(只要时间段不重叠即可):15年4月15日,老师可能在10:00、11:00、12:00和16:00有时间段。选择特定的老师时间/时间后,将为一个人服务。 时间段/范围:4月15日,另一位老师可以在10:00至12:00,然后从14:00至18:00上班。一个人按到达顺序得到服务,因此,如果教师在10:00到12:00之间工作,则在此期间到达的所有人员都将按到达顺序(本地队列)参加。 由于必须在搜索中返回所有可用的教师,因此我需要将所有空位与到达范围的顺序保存在同一张表中。这样,我可以通过date_from ASC进行排序,在搜索结果上首先显示第一个可用的广告位。 当前表结构 CREATE TABLE `teacher_slots` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `teacher_id` mediumint(8) unsigned NOT NULL, `city_id` smallint(5) unsigned NOT NULL, `subject_id` smallint(5) unsigned NOT NULL, `date_from` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `date_to` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', `status` tinyint(4) NOT NULL DEFAULT …