mysql索引使得组慢

时间:2015-09-02 13:43:05

标签: 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或服务器端没什么,因为我在那里什么也做不了。

提前致谢。

1 个答案:

答案 0 :(得分:0)

这样更好吗?

 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`),
  KEY(rtype,zid)  
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1821039 ;

explain
select COUNT(oarc.ID) as total 
  from `oarc` where`oarc`.`rtype` = 'v' 
 group 
    by `oarc`.`zID`

+----+-------------+-------+------+---------------+-------+---------+-------+------+--------------------------+
| id | select_type | table | type | possible_keys | key   | key_len | ref   | rows | Extra                    |
+----+-------------+-------+------+---------------+-------+---------+-------+------+--------------------------+
|  1 | SIMPLE      | oarc  | ref  | rtype         | rtype | 3       | const |    1 | Using where; Using index |
+----+-------------+-------+------+---------------+-------+---------+-------+------+--------------------------+