- 论坛徽章:
- 0
|
本帖最后由 cenalulu 于 2012-06-26 17:47 编辑
select * from (select Id,Name,Point
from account
where Id in (select Id from list) and ConnectTime >= '2012-06-10 00:00:00' and ConnectTime <= '2012-06-23 00:00:00'
order by ConnectTime desc) a group by Id order by Point desc limit 1000;
我自己写的这条语句是查询:
where Id in (select Id from list) 用这里面list表里的用户ID (一共3万多条),去account里面查询这些ID对应的用户名Name和点数Point,(登录的时间ConnectTime的限定是6月10日至6月23日),把点数Point最多的前1000人列出来
list表里就3万条ID,account表是只要一个用户登录一次,就记录对应的一条信息(所以数据量也是上万),所以我先按时间排,再group by ID,这样就列出这个用户最后一次登录的那条信息,然后再按这些数据里谁的Point大,就排出1000条。
现在问题是我这条语句效率太低,要2小时才能列出,请问高手们,这条语句如何优化? |
|