Я пытаюсь вернуть набор результатов из таблицы базы данных MySQL подписок электронной почты.
Таблица называется подпиской и выглядит следующим образом:
+-----------------+------------------+------+-----+---------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------------------+-------+
| eid | int(11) unsigned | NO | PRI | NULL | |
| subscribeStatus | varchar(4) | NO | PRI | NULL | |
| transDate | datetime | NO | PRI | 0000-00-00 00:00:00 | |
| senttoevDate | datetime | YES | | NULL | |
+-----------------+------------------+------+-----+---------------------+-------+
PK - это (eid, subscribeStatus, transDate) и существуют следующие дополнительные индексы:
idxEid на eid, idxTDate на transDate
Таблица является таблицей InnoDB.Он содержит около 480 тыс. Строк.
Версия MySQL - 5.1.39 x86_64, и я использую 64-разрядную версию Windows 7.
В таблицу вставляется строка каждый раз, когда пользователь подписывается или отписывается отЭл. адрес.Я хочу знать, какой последний статус подписки для всех пользователей.Запрос, который я хочу выполнить:
select
eid, transDate from subscribe s
where
transDate = (select max(transDate) from subscribe si where si.eid = s.eid)
Когда я запускаю его в MySQL Query Browser (и в TOAD for MySQL), он сразу возвращает около 98K строк (в таблицу результатов), а затем просто зависает.Я вижу из графического интерфейса администратора MySQL, что состояние «Отправка данных».Я оставил его на час, и он не закончил возвращать результаты или даже перешел с 98K.
Я настроил параметры my.ini для InnoDB, чтобы увеличить innodb_buffer_pool_size до 3Gb (на моей машине есть 4 Гб), но из диспетчера задач видно, что mysqld никогда не использует более 400 Кбайт.
Я создал версию таблицы MyISAM, чтобы проверить, лучше ли это, но также зависаетпримерно столько же возвращенных строк.
Может кто-нибудь подсказать, почему запрос возвращает несколько строк, но затем "зависает", а также то, что я могу сделать, чтобы обойти это и заставить запрос возвращаться, как следует?
Заранее большое спасибо за любую помощь, которую вы можете предложить!