楼主: udfrog

[精华] plsql优化笛卡尔积

[复制链接]
论坛徽章:
93
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
31#
 楼主| 发表于 2014-1-14 22:06 | 只看该作者
lastwinner 发表于 2014-1-14 19:39
重新造测试数据,用dbms_random.string('a',dbms_random.value(5,50))做字符串源来生成

另外,pipelin ...

貌似没什么变化,不过也没恶化

使用道具 举报

回复
论坛徽章:
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
32#
发表于 2014-1-14 22:38 | 只看该作者
记得当时牛蛙在这里问过,不少人给了建议,最终还是没有解决。现在他凭着自己的聪明才智找到了解决办法并分享代码,可喜可贺!
我觉得你还有几个地方可以玩:
上次说的是CLOB,这回只是VARCHAR2, 那么我提议的MODEL也可以一试。
你的管道函数用了输入游标,那么是否可以试验BULK FETCH。
不用输入游标,用 SELECT ... FROM T1, table(refcur_pkg_v1.f_cartesian(T1.TEXT))
这样的方法又是如何。
不用管道,只用返回嵌套表的函数。
二分法改成递归函数?

使用道具 举报

回复
论坛徽章:
93
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
33#
 楼主| 发表于 2014-1-14 22:48 | 只看该作者
newkid 发表于 2014-1-14 22:38
记得当时牛蛙在这里问过,不少人给了建议,最终还是没有解决。现在他凭着自己的聪明才智找到了解决办法并分 ...

本来我兴致勃勃发这个帖子,打算骗个精华。
现在你给了个精华,但是我看到你这些建议,我大冬天的冒了一头的虚汗,还浃了背,惭愧!

使用道具 举报

回复
论坛徽章:
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
34#
发表于 2014-1-14 23:06 | 只看该作者
udfrog 发表于 2014-1-14 22:48
本来我兴致勃勃发这个帖子,打算骗个精华。
现在你给了个精华,但是我看到你这些建议,我大冬天的冒了一 ...

哈哈,还能远程让你发汗,没这么神吧!
我想像了一下二分法,如果要写成递归那就是类似
IF 没有逗号 THEN RETURN 字符串
ELSE RETURN F(上半截) MULTISET UNION F(下半截)
END IF

管道应该是做不到的了,用嵌套表可能开销挺大。

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
27
至尊黑钻
日期:2015-10-19 09:57:44红钻
日期:2015-10-19 09:57:06ITPUB15周年纪念
日期:2018-10-26 11:37:06
35#
发表于 2014-1-15 00:09 | 只看该作者
牛X,学习

使用道具 举报

回复
求职 : ERP实施
论坛徽章:
22
2013年新春福章
日期:2013-02-25 14:51:24秀才
日期:2017-02-22 15:18:00秀才
日期:2017-03-20 13:42:20秀才
日期:2017-03-28 15:59:38秀才
日期:2017-05-09 11:37:55秀才
日期:2017-08-18 11:02:47秀才
日期:2018-04-08 14:48:31秀才
日期:2018-06-21 10:08:00ITPUB18周年纪念章
日期:2018-09-17 10:09:49ITPUB18周年纪念章
日期:2018-09-17 10:12:57
36#
发表于 2014-1-15 00:17 | 只看该作者
虽然看不太懂,我的理解是:
同样用计算机计算从1加到100,一种方法是用循环做累加,另一种方法是计算(100+1)*100/2。那个更有运行效率呢。

使用道具 举报

回复
论坛徽章:
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
37#
发表于 2014-1-15 01:51 | 只看该作者
〇〇 发表于 2014-1-14 20:28
你的xml取序列怎么写的

select rownum rn from xmltable('1 to 1048576')

帖子没加精,真不好找  http://www.itpub.net/thread-1796279-1-1.html

使用道具 举报

回复
论坛徽章:
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
38#
发表于 2014-1-15 01:52 | 只看该作者
udfrog 发表于 2014-1-14 22:06
貌似没什么变化,不过也没恶化

12800太小,加大100倍试试看

使用道具 举报

回复
论坛徽章:
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
39#
发表于 2014-1-15 06:07 | 只看该作者
udfrog 发表于 2014-1-14 21:04
是么?deterministic能加速?试试

deterministic只适用于参数值非常少的应用,如果你的参数千变万化就没有意义了。

使用道具 举报

回复
求职 : 数据库管理员
论坛徽章:
9
ITPUB 11周年纪念徽章
日期:2012-10-10 13:11:14红旗
日期:2013-09-16 16:42:30三菱
日期:2013-11-25 11:21:19比亚迪
日期:2014-02-13 10:13:272014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上有房
日期:2014-03-27 16:00:40马上加薪
日期:2014-03-27 16:00:40优秀写手
日期:2014-06-13 06:00:12
40#
发表于 2014-1-15 09:57 | 只看该作者
研究的好深入啊。
下来好好看看

使用道具 举报

回复

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

本版积分规则 发表回复

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