У меня есть следующие две таблицMYSQL Выбор старейшей записи даты для каждого уникального события
CREATE TABLE IF NOT EXISTS `events` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM;
CREATE TABLE IF NOT EXISTS `events_dates` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`event_id` bigint(20) NOT NULL,
`date` date NOT NULL,
`start_time` time NOT NULL,
`end_time` time NOT NULL,
PRIMARY KEY (`id`),
KEY `event_id` (`event_id`),
KEY `date` (`event_id`)
) ENGINE=MyISAM;
Где ссылка event_id
То, что я хочу, чтобы получить все уникальные записи событий с соответствующими датами событий упорядоченных по наименьшему дате по возрастанию в течение определенного периода
в принципе следующий запрос делает именно то, что я хочу
SELECT Event.id, Event.title, EventDate.date, EventDate.start_time, EventDate.end_time
FROM
events AS Event
JOIN
com_events_dates AS EventDate
ON (Event.id = EventDate.event_id AND EventDate.date = (
SELECT MIN(MinEventDate.date) FROM events_dates AS MinEventDate
WHERE MinEventDate.event_id = Event.id AND MinEventDate.date >= CURDATE() # AND `MinEventDate`.`date` < '2013-02-27'
)
)
WHERE
EventDate.date >= CURDATE() # AND `EventDate`.`date` < '2013-02-27'
ORDER BY EventDate.date ASC , EventDate.start_time ASC , EventDate.end_time DESC
LIMIT 20
Этот запрос является результатом нескольких попыток дальнейшего улучшения медленного времени, которое первоначально имело (1,5 секунды), когда я хотел использовать групповые и другие подзапросы. Его самый быстрый из них, но учитывая, что есть 1400 записей событий и 10000 записей событий, запрос занимает 400 + мс для обработки, также я запускаю подсчет на основе этого (для поисковых запросов), который занимает много времени, поскольку Что ж. Как ни странно, если исключить условие EventDate в главном, где это предложение, это будет еще выше 1 с +.
Есть ли что-нибудь, что я могу сделать для улучшения этого или другого подхода в структуре таблицы?
Как это выполнить без заказа по условию? –
Без заказа он выполняет намного быстрее, но мне действительно нужно их отсортировать таким образом. – zakel