問題が発生しています。巨大なデータベースがあり、変更を加えることができません。最初にこのすべてのデータを処理する必要があります。問題は、以下に記述されている各クエリに約1〜2分かかることです。誰かが最適化された選択をする方法を知っているなら、私はそれを評価するでしょう。
select distinct x.peerId
,(select max(id) from checkPeer where peerId=x.peerId) as idd
from checkPeer x where x.id>0 order by x.id desc
以下に定義されたテーブルからこの選択を最適化する方法はありますか?
CREATE TABLE `checkPeer` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`peerId` varchar(100) COLLATE utf8_bin DEFAULT NULL,
`peerDate` datetime DEFAULT NULL,
`peerUrl` bigint(20) DEFAULT '0',
`peerState` bigint(20) DEFAULT '0',
`peerMessage` varchar(500) COLLATE utf8_bin DEFAULT NULL,
`peerResource` varchar(5000) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `peerId` (`peerId`),
KEY `peerUrl` (`peerUrl`)
) ENGINE=MyISAM AUTO_INCREMENT=688791 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
ありがとうございました!