职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 418|回复: 8

话说腾讯的一道面试题,有没有好的方案。

[复制链接]
hxy 发表于 2011-9-16 11:22 | 显示全部楼层 |阅读模式
话说腾讯的一道面试题,有没有好的方案。
现在有30张表,每张表记录了当天的登录用户信息(一个用户由于时间不同可以有多项),每张表大约有8亿项。

现在要求使用SQL操作查找出这个月登陆次数最多的前N个用户。

大家多多提供思路啊。



天上智喜 发表于 2011-9-16 11:22 | 显示全部楼层
总体上可以用归并划分的思想吧
表间不用划分,用归并即可,但对单表可以提取TOP N;
对单表可以再划分再归并

不过,如果完全用SQL我觉得不太可能吧?要么程序控制,要么得用存储过程。。。。。

只学java 发表于 2011-9-16 11:22 | 显示全部楼层
keke8614 写道
查出每张表的每个用户的登录次数,然后用union all将30张表连接,最后把相同用户的登录次数加起来求前N个排名的用户/


......

shmilyyu 发表于 2011-9-16 11:22 | 显示全部楼层
lyw985 写道
keke8614 写道
查出每张表的每个用户的登录次数,然后用union all将30张表连接,最后把相同用户的登录次数加起来求前N个排名的用户/


......

这个也。。。

木已 发表于 2011-9-16 11:22 | 显示全部楼层
难道是map-reduce+分布式?不知道靠谱不

曾经的小孩 发表于 2011-9-16 11:23 | 显示全部楼层
绝对的 map reduce

叫我小乖 发表于 2011-9-16 11:23 | 显示全部楼层
查出每张表的每个用户的登录次数,然后用union all将30张表连接,最后把相同用户的登录次数加起来求前N个排名的用户/

yoyo 发表于 2011-9-16 11:23 | 显示全部楼层
用sql是最慢的,top n的查询最好避免sql,用程序实现
如果时间上有索引,8亿级的数据时间索引应该是百兆到g的级别

broken 发表于 2011-9-16 11:24 | 显示全部楼层
错了,再想想。

您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-2 01:09 , Processed in 0.134874 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表