@chairo 在第一步使用group by uid再取最大的stage_id么? SELECT uid FROM `table` WHERE stage_id in (SELECT max(stage_id) FROM `table` GROUP BY uid) ORDER BY stage_id desc,star ASC,created ASC limit 0,100 这样么? 这样感觉也有问题呢
chairo
2012-12-27 17:05:45 +08:00
@piresion 看我后边补充的,第一次时候不需要任何group by,只是取最大stage_id,在操作大表时候尽量简化查询条件。取出一部分数据再操作临时表时候可以group by uid等复杂一些的操作。把复杂的sql拆分成简单的多条sql可能最后效率会比一条复杂大sql反而会高……
123123
2012-12-27 17:45:48 +08:00
如果最大关卡数是4,那么完成 4 A 的用户优先级会大于 3 S 的用户?如果是这样,那么 我的思路是先取出最大关卡数评价为S的所有数据,再在这张临时表中进行时间排序,如果不够那么再去取最大关卡数评价为A的所有数据,依次类推直到凑够100个未知。 这样应该也不会超过你的100秒