У меня есть следующая таблицаMySQL выбрать, где подзапрос медленно
id | firstname | lastname | email | date
1 | steven | smith | [email protected] 2013-06-10 04:01:25
2 | Bill | Johnson | [email protected] | 2014-06-10 04:01:25
3 | steven | smith | [email protected] | 2014-10-10 12:01:25
Этот запрос возвращает письма, которые имеют самую последнюю дату так будет возвращать номер строки 2 и 3. Он не возвращает строки номер 1, как дата меньше, чем дата номера строки 3
SELECT DISTINCT
us.email,
us.*
FROM
`users` AS us
WHERE us.`users` =
(SELECT
MAX(`date`)
FROM
`users` AS u
WHERE u.email = us.email)
запрос отлично подходит для небольшого количества данных работает, но когда я пытаюсь запустить его на 40k строк она занимает очень много времени. Более 5 минут
Этот запрос ответ кто-то писал от моего предыдущего вопроса так же ссылка SQL скрипку
http://sqlfiddle.com/#!2/338f0/1
нет, спасибо! Я добавил индекс по дате и по электронной почте – meWantToLearn
Посмотрите, что 'EXPLAIN' и/или EXPLAIN EXTENDED' сообщает вам о вашем запросе ... это не будет хорошей новостью, хотя –