Пожалуйста, обратитесь к таблице strcuture ниже.mysql indexing делает группу медленным
CREATE TABLE `oarc` (
`ID` bigint(20) NOT NULL AUTO_INCREMENT,
`zID` int(11) NOT NULL,
`cID` int(11) NOT NULL,
`bID` int(11) NOT NULL,
`rtype` char(1) COLLATE utf8_unicode_ci NOT NULL,
`created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1821039 ;
Помимо PRIMARY KEY, я не установил никакого индекса на этом, и когда я запускаю следующий запрос
select COUNT(oarc.ID) as total
from `oarc` where`oarc`.`rtype` = 'v'
group
by `oarc`.`zID`
Я получаю результат менее чем за 1 секунду. Но если я добавлю индекс в zID, он занимает более 5 секунд.
Пожалуйста, смотрите ниже объяснить результат:
id | select_type | table | type | possible_keys | key | key_len | ref | row | Extra
--------------------------------------------------------------------------------------------------------
1 | SIMPLE | oarc | index | NULL | zone_ID | 4 | NULL | 1909387 | Using where
В настоящее время в таблице имеют более 1821039 записей в ней, и она будет увеличиваться на почасовой основе. Что мне нужно сделать, чтобы сократить время выполнения запроса. Я ожидаю только что-то за столом и уровнем запросов, ничего на my.cnf или на стороне сервера, потому что я ничего не могу там сделать.
Заранее спасибо.
Индекс на rtype окажется более полезным, но все равно опубликуйте объяснение. – Strawberry
Объяснение добавленного результата – aarpey
EXPLAIN ссылается на столбец, отсутствующий в таблице. – Strawberry