gpt4 book ai didi

mysql 索引使 group by 变慢

转载 作者:行者123 更新时间:2023-11-29 22:03:51 27 4
gpt4 key购买 nike

请参阅下面的表格结构。

  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 ;

除了主键之外,我没有对此设置任何索引,当我运行以下查询时

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 或服务器端上执行任何操作,因为我无法在那里执行任何操作。

提前致谢。

最佳答案

这样更好吗?

 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 |
+----+-------------+-------+------+---------------+-------+---------+-------+------+--------------------------+

关于mysql 索引使 group by 变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32354876/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com