免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1188 | 回复: 1
打印 上一主题 下一主题

[桌面系统] 请教个很简单的sql,写的比较笨,如果表很大的话有点慢,想请教下有比较方便的写法吗 [复制链接]

论坛徽章:
1
处女座
日期:2014-05-13 17:11:45
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-07-03 16:33 |只看该作者 |倒序浏览
请教个很简单的sql,写的比较笨,如果表很大的话有点慢,想请教下有比较方便的写法吗

表a有两列,一个是id,一个是登陆时间
sql意思是在表a中取出出现次数最的的前10个id所有的登陆时间记录

select m.id = n.id
from A m,
(
        select id from a group by id order by count(*) desc limit 10
) n

论坛徽章:
0
2 [报告]
发表于 2012-07-03 16:54 |只看该作者
这个贴怎么发到这来了,应该发到数据库那边吧,
既然表很大,再用count(*),sql文再快也快不到哪去,你试一下这个SQL文,在一张千万级数据上试了一下,检索时间个人觉得还行

select id,
  CNT
   from
  (select t.id,
    count(t.id) as CNT
     from a t
GROUP by t.id
order by CNT desc
  )
  where rownum <= 10
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP