楼主: ~贝贝~

[精华] “盛拓传媒杯”SQL数据库编程大赛第一期评分及所有参赛选手答题揭晓!

[复制链接]
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
101#
发表于 2011-3-17 09:56 | 只看该作者
测了一下,二楼的假递归m=2/3/4时
速度分别为 1.5sec, 8sec,7sec
probe解法m=2/3/4
速度分别为 0.2sec, 0.3sec,0.6sec

使用道具 举报

回复
论坛徽章:
484
ITPUB北京香山2007年会纪念徽章
日期:2007-01-24 14:35:02ITPUB北京九华山庄2008年会纪念徽章
日期:2008-01-21 16:50:24ITPUB北京2009年会纪念徽章
日期:2009-02-09 11:42:452010新春纪念徽章
日期:2010-03-01 11:04:552010数据库技术大会纪念徽章
日期:2010-05-13 10:04:272010系统架构师大会纪念
日期:2010-09-04 13:35:54ITPUB9周年纪念徽章
日期:2010-10-08 09:28:512011新春纪念徽章
日期:2011-02-18 11:43:32ITPUB十周年纪念徽章
日期:2011-11-01 16:19:412012新春纪念徽章
日期:2012-01-04 11:49:54
102#
发表于 2011-3-17 10:02 | 只看该作者
原帖由 rollingpig 于 11-3-17 09:09 发表
至于"rownum < power(16,:N)"
说实话,是挑出来的,要同时让M=2/3/4的条件获得一个不错的性能的值

m=2时,要获得probe=10, rownum 要大于200
m=3时,要获得probe=15, rownum 要大于3600
m=4是,要获得probe=20, rownum 要大于18000

所以用了一个power来生成。

某种意义上来说,这个值不是通过"一个SQL"获得的,但是逻辑上是严谨的,正如我所说的这个值仅仅影响性能,并不会对结果产生影响,。


你这个意思我们都看明白啦,其实就是说,这个值并不是通过sql计算得出的,而是由结果推出的,其实属于一个隐藏很深的的“假定有10个球”的逻辑判定
至于刚才的建议,你将rownum < power(16,:N)降低下试试看?  在我这里,换成rownum < power(6,:N),性能立即降低很多
建议你加的条件 line1.balls + line2.balls + line3.balls+ line4.balls+ line5.balls >= line1.probed_max_balls, 是为了降低结果集中待排序的记录数,有助于提高排序效率的

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
103#
发表于 2011-3-17 10:16 | 只看该作者
常规解法,包括把老杨的SQL从=2改成<=2并加上all_balls=max_balls的条件后。
M取2时是3.5sec
M取3时是1minute
M取4时是 N minute

使用道具 举报

回复
论坛徽章:
20
SQL大赛参与纪念
日期:2011-04-13 12:08:17生肖徽章:马
日期:2013-12-06 14:15:45生肖徽章:羊
日期:2013-12-06 14:15:45生肖徽章:猴
日期:2013-12-06 14:15:45生肖徽章:鸡
日期:2013-12-06 14:15:45生肖徽章:狗
日期:2013-12-06 14:15:45生肖徽章:猪
日期:2013-12-06 14:15:45SQL极客
日期:2013-12-09 14:13:35itpub13周年纪念徽章
日期:2014-09-28 10:55:55生肖徽章:蛇
日期:2013-12-06 14:15:45
104#
发表于 2011-3-17 10:21 | 只看该作者
呜呜,把第二期的答案给第一期用就好了~

使用道具 举报

回复
论坛徽章:
131
2006年度最佳技术回答
日期:2007-01-24 12:58:48福特
日期:2013-10-24 13:57:422014年新春福章
日期:2014-02-18 16:41:11马上有车
日期:2014-02-18 16:41:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:142013年新春福章
日期:2013-02-25 14:51:24
105#
发表于 2011-3-17 10:22 | 只看该作者

对的,在probe不完全的情况下,加这个条件最主要减少的是solution结果集,提高最后输出结果的那一段。在我这里大概是 3.7sec 到 3.2sec的提升。

呵呵,当时没考虑这一点,因为我的probe已经完全了。

原帖由 lastwinner 于 2011-3-17 10:02 发表


你这个意思我们都看明白啦,其实就是说,这个值并不是通过sql计算得出的,而是由结果推出的,其实属于一个隐藏很深的的“假定有10个球”的逻辑判定
至于刚才的建议,你将rownum < power(16,:N)降低下试试看?  在我这里,换成rownum < power(6,:N),性能立即降低很多
建议你加的条件 line1.balls + line2.balls + line3.balls+ line4.balls+ line5.balls >= line1.probed_max_balls, 是为了降低结果集中待排序的记录数,有助于提高排序效率的

使用道具 举报

回复
论坛徽章:
39
嫦娥
日期:2015-08-26 10:44:22托尼托尼·乔巴
日期:2019-12-17 00:46:1120周年集字徽章-20	
日期:2020-10-28 14:59:27
106#
发表于 2011-4-7 15:42 | 只看该作者
下载学习

使用道具 举报

回复
论坛徽章:
0
107#
发表于 2011-4-11 16:55 | 只看该作者
不错  受益匪浅

使用道具 举报

回复
论坛徽章:
52
20周年集字徽章-20	
日期:2020-10-28 14:48:18秀才
日期:2018-01-02 10:37:21秀才
日期:2018-01-02 10:37:21秀才
日期:2018-01-02 10:37:21秀才
日期:2018-01-02 10:37:21秀才
日期:2018-01-02 10:32:16技术图书徽章
日期:2018-01-02 10:32:16秀才
日期:2018-01-02 10:32:00秀才
日期:2017-12-12 09:54:38技术图书徽章
日期:2017-09-25 15:11:39
108#
发表于 2011-4-11 19:39 | 只看该作者
通过这个题,学会了with语句,总算有收获

使用道具 举报

回复

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

本版积分规则 发表回复

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