私のMySQLサーバーを燃やすという非常に奇妙な問題が発生しています。私の観点からは (これは確かに間違っています)、クエリは非常に簡単です。
PBX イベントを格納するテーブルがあり、アプリケーションが再起動されるたびに、すべてのエージェントの最新のイベントを取得して状況を確認しようとします。
起動するたびに、サーバーは CPU の 99% まで上昇し、約 5 分間持続して自動的に解決します。
それはレコード数が10万件を超えているからだと思われます。
表は次のとおりです。
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
日付で制限しようとしましたが、クエリで何も得られないためうまくいきません。これを回避するには、どうすればクエリを改善できますか?