У меня очень простой запрос к большой таблице (около 37 миллионов строк).Этот запрос выполняется более 10 минут и должен быть быстрым, поскольку индексы построены правильно (я думаю).Я не понимаю, почему этот запрос занимает так много времени.Я надеюсь, что кто-то может направить меня в правильном направлении:
Запрос:
select type_id, sub_type_id, max(settlement_date_time) as max_dt
from transaction_history group by type_id, sub_type_id
Создать заявление:
CREATE TABLE `transaction_history` (
`transaction_history_id` int(11) NOT NULL AUTO_INCREMENT,
`type_id` int(11) NOT NULL,
`sub_type_id` int(11) DEFAULT NULL,
`settlement_date_time` datetime DEFAULT NULL,
PRIMARY KEY (`transaction_history_id`),
KEY `sub_type_id_idx` (`sub_type_id_id`),
KEY `settlement_date` (`settlement_date_time`),
KEY `type_sub_type` (`type_id`,`sub_type_id`)
) ENGINE=InnoDB AUTO_INCREMENT=36832823 DEFAULT CHARSET=latin1;
Результат от Объяснить:
id -> 1
select_type -> SIMPLE
table -> transaction_history
type -> index
possible_keys -> NULL
key -> type_sub_type
key_len -> 9
ref -> NULL
rows -> 37025337
filtered -> 100.00
Extra ->
Почему возможны ключи NULL?Он говорит, что использует индекс, но это не так.почему ссылка NULL?Как я могу сделать этот запрос более эффективным?Что-то не так с индексами?Нужно ли менять какие-либо значения в конфигурационном файле MySQL?
Спасибо