楼主: junsansi

[精华] 单条SQL语句实现复杂逻辑几例~~

[复制链接]
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
51#
发表于 2008-11-5 00:00 | 只看该作者
原帖由 addm 于 2008-11-4 09:40 发表


我试了,添加你的数据,没有错啊。

你说得对,我昨天加的排序是不必要的,不知怎么看走眼了 老兄的SQL写得真是犀利!
真巧我们是同行,我现在就职于多伦多一家在线游戏公司,因为经济衰退,公司随时都可能关门大吉。这里的ORACLE开发职位也不好找,DBA稍微多些但我又没经验,我现在也正发愁呢。
我曾经在这里看到过一些招聘启事,不知道itpub是否和猎头合作,论坛里人才济济,一挖一大把。或者你和几位版主联系看看,他们大多身居高位,可能有一些机会。
说到游戏,我有个问题想请教,如果你有兴趣咱们不妨另开新贴:
我们现在有积分排行榜的需求,要能够列出用户当前所处的位置,按每页10个分页。比方说我的成绩排名12就在第二页, 用户可以看到自己所处的页也可以点击浏览其它的排行页面。
我的问题就是:如果实时排序计算排名、分页,开销比较大;把排名事先算好建立索引则查询很快,但是有维护开销。我现在是搞了MATERIALIZED VIEW一个小时刷新一次(全刷新)。不知道老兄是否有过类似问题,有没有好的解决办法?谢谢!

使用道具 举报

回复
论坛徽章:
3
CTO参与奖
日期:2009-01-15 11:42:462010新春纪念徽章
日期:2010-01-04 08:33:08ITPUB十周年纪念徽章
日期:2011-11-01 16:24:04
52#
发表于 2008-11-5 11:38 | 只看该作者
不知你的游戏排名是显示在是网页上,还是显示在游戏的客户端里,还有用户数大概是多少。
如要详细讨论,你可以开个贴,详细介绍一下情况,及要解决的问题。

一般做法是这样:
要实时显示排名,一般开个大数组,都把数据放在内存里。每个用户有信息只留一个整型的ID和整型的分数。
显示的时候,在数据中找到用户所在的页(页号=ceil(排名/页)),把ID、分数先显示出来,自己的ID可以先用一个特殊颜色标记。(同步执行)
然后再去数据库里根据用户ID(整型)查,用户的用户名(字符串),显示出来。(异步执行)
最后再去数据库里根据用户ID(整型)查,用户的样关信息,经验值、个人介绍等信息,显示出来。(异步执行)

当有分数更新的时候,先同步更新内存里的排名数组。再异步更新数据库。

服务器关闭时,不需要专门处理。
服务器启动时,从数据库中读取排名,加载进内存数据组即可。

10万人在线,当客户端有排列列表需求时,客户端5秒钟刷新一次排名列表。绰绰有余。

使用道具 举报

回复
论坛徽章:
2
八级虎吧徽章
日期:2008-12-24 12:00:59CTO参与奖
日期:2009-01-15 11:42:46
53#
发表于 2009-1-22 15:34 | 只看该作者
学习了

使用道具 举报

回复
论坛徽章:
10
八级虎吧徽章
日期:2008-12-28 14:00:47祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:兔
日期:2009-03-30 16:21:12生肖徽章2007版:牛
日期:2009-03-10 21:33:00生肖徽章2007版:龙
日期:2009-03-10 21:27:46生肖徽章2007版:龙
日期:2009-03-10 21:14:14生肖徽章2007版:龙
日期:2009-02-27 11:34:09授权会员
日期:2009-01-05 12:32:292009新春纪念徽章
日期:2009-01-04 14:52:282011新春纪念徽章
日期:2011-02-18 11:43:34
54#
发表于 2009-1-22 15:53 | 只看该作者
学习 收藏

使用道具 举报

回复
论坛徽章:
1
数据库板块每日发贴之星
日期:2009-04-12 01:01:02
55#
发表于 2009-4-13 21:23 | 只看该作者
thank you!!!!

使用道具 举报

回复
论坛徽章:
0
56#
发表于 2009-4-14 16:28 | 只看该作者
已经看过了,不错。

使用道具 举报

回复
论坛徽章:
0
57#
发表于 2009-9-4 14:52 | 只看该作者
楼主神人呀

使用道具 举报

回复
论坛徽章:
9
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章2007版:鸡
日期:2008-01-02 17:35:53生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:猪
日期:2009-03-10 21:17:25生肖徽章2007版:猴
日期:2009-03-10 21:23:27生肖徽章2007版:牛
日期:2009-03-10 21:26:49生肖徽章2007版:鸡
日期:2009-03-10 21:36:09ITPUB8周年纪念徽章
日期:2009-09-27 10:21:22祖国60周年纪念徽章
日期:2009-10-09 08:28:00
58#
发表于 2009-9-17 23:23 | 只看该作者
总结得不错,model子句是10g才有的新函数

使用道具 举报

回复
论坛徽章:
12
2013年新春福章
日期:2013-02-25 14:51:24
59#
发表于 2009-9-18 08:04 | 只看该作者
好帖 下载了

使用道具 举报

回复
论坛徽章:
0
60#
发表于 2009-9-18 16:03 | 只看该作者
不错,MODEL没用过,学习了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表