我遇到了一个非常奇怪的问题,它烧毁了我的 MySQL 服务器。从我的角度来看(这肯定是错误的),查询非常简单。
我有一个表来存储 PBX 事件,并且我尝试获取每个代理的最后一个事件,以便在我的应用程序重新启动或其他任何情况下查看他/她的情况。
每当我启动时,服务器会占用 99% 的 CPU 并持续大约 5 分钟自行解决。
似乎是因为记录的数量,超过了 100,000 条。
表格如下:
CREATE TABLE IF NOT EXISTS `eventos_centralita` (
`idEvent` int(11) NOT NULL AUTO_INCREMENT,
`fechaHora` datetime NOT NULL,
`codAgente` varchar(8) DEFAULT NULL,
`extension` varchar(20) DEFAULT NULL,
`evento` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idEvent`),
KEY `codAgente` (`codAgente`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=105847 ;
查询如下:
SELECT a.* FROM eventos_centralita a
LEFT JOIN eventos_centralita b ON b.codAgente = a.codAgente AND b.fechaHora > a.fechaHora
GROUP BY a.codAgente
我试图按日期限制它,但没有运气,因为查询没有给我任何东西。我怎样才能改进查询以避免这种情况?