請參閱下面的表strcuture。mysql索引使組緩慢
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