不用子查询,用了子查询会查一次全表。
表结构
ID Type User Level
取出Level 最高,Type分组的ID出来
CREATE TABLE IF NOT EXISTS `test` ( `Id` int(11) NOT NULL, `PlayerId` int(11) NOT NULL, `Type` int(11) NOT NULL, `Level` tinyint(4) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `test`.`test` (`Id`, `PlayerId`, `Type`, `Level`) VALUES (NULL, '1', '1', '2'), (NULL, '1', '1', '13'), (NULL, '1', '2', '23'), (NULL, '1', '2', '3'), (NULL, '1', '3', '24');EXPLAIN SELECT C.`Id` FROM ( SELECT * FROM `test` WHERE `PlayerId` = 1 ORDER BY `Level` DESC ) AS C GROUP BY C.`Type` 这样的执行效率太低了。
慕尼黑8549860
明月笑刀无情
相关分类