Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 炸服务器的SQL查询_Mysql - Fatal编程技术网

Mysql 炸服务器的SQL查询

Mysql 炸服务器的SQL查询,mysql,Mysql,我遇到了一个非常奇怪的问题,烧坏了我的MySQL服务器。在我看来(这肯定是错误的),这个问题相当琐碎 我有一个表来存储PBX事件,每当我的应用程序重新启动时,我都会尝试获取每个代理的最后事件,以查看他/她的情况 每当我启动时,服务器将占用99%的CPU,并持续大约5分钟自行解决问题 这似乎是因为记录的数量超过了100000条 下表如下: CREATE TABLE IF NOT EXISTS `eventos_centralita` ( `idEvent` int(11) NOT NULL A

我遇到了一个非常奇怪的问题,烧坏了我的MySQL服务器。在我看来(这肯定是错误的),这个问题相当琐碎

我有一个表来存储PBX事件,每当我的应用程序重新启动时,我都会尝试获取每个代理的最后事件,以查看他/她的情况

每当我启动时,服务器将占用99%的CPU,并持续大约5分钟自行解决问题

这似乎是因为记录的数量超过了100000条

下表如下:

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
查询如下:

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
我试图按日期限制它,但没有运气,因为查询没有给我任何信息。如何改进查询以避免此问题?

请尝试以下操作:

SELECT a.* FROM eventos_centralita a 
INNER JOIN 
(
    SELECT idEvent, MAX(fechaHora)
    FROM eventos_centralita  
    GROUP BY codAgente
) as b
ON a.idEvent = b.idEvent

为什么这里需要左连接?我本以为会有类似于从eventos_centralita GROUP选择codAgente,max(fechaHora)的东西,codAgente限制为0,20@jamie0726你似乎是对的,但这也不能给出正确的结果。。。时间似乎是对的,但事件不是。。。发生什么事了?嗨,米尼什,这似乎没有给我正确的结果。例如,
120 2012-09-04 10:10:28 1022 116可用
但是,执行此命令:
SELECT*FROM eventos_centralita,其中codAgente='1009'由eventos_centralita排序。fechaHora DESC LIMIT 0,30
向我显示:
105894 2013-02-25 09:26:47 1022 112休息
@AntonioLaguna如果您正在寻找最新结果,你能用MAX()函数而不是MIN()来尝试上面的解决方案吗当然,这似乎是MySQL的问题,我的服务器版本中有一个bug。