ITPUB??ì3
12月微软Hyper-V虚拟化沙龙主题征集
ITPUB论坛 » Oracle开发 » 很少受关注的SQL中一些函数调用秘密

标题: [精华] 很少受关注的SQL中一些函数调用秘密
  本主题由 System 于 2008-9-11 05:00 解除限时置顶 
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 7
个人空间 0
技术积分 8321 (155)
社区积分 478 (1610)
注册日期 2002-1-6
论坛徽章:17
现任管理团队成员     
      

发表于 2008-9-9 11:03 


QUOTE:
原帖由 junsansi 于 2008-9-9 10:43 发表
to:nf
不奇怪,rownum固化结果集,不好使才叫奇怪~~


嗯, 有道理.


__________________
 
帮助别人,也在帮助自己!
Oracle Version 9.2.0
Oracle Version 10.2.0

看别人不顺眼是自己修养不够!
只看该作者    顶部
离线 kmpx
VICTORY


精华贴数 0
个人空间 0
技术积分 1078 (1713)
社区积分 1 (43006)
注册日期 2006-10-8
论坛徽章:1
2008北京奥运纪念徽章:铁人三项     
      

发表于 2008-9-9 11:19 
先收藏


__________________
别揣着糊涂装明白
只看该作者    顶部
离线 zhangweicai74
阿财


来自 贵州
精华贴数 3
个人空间 243
技术积分 6107 (225)
社区积分 23896 (57)
注册日期 2007-12-13
论坛徽章:171
体育版块博采纪念徽章生肖徽章2007版:虎生肖徽章2007版:马生肖徽章:狗  
      

发表于 2008-9-9 13:12 
MARK


__________________
NEVER TOO LATE
想吃贵州家乡菜不?进来嘛,老乡!!
http://space.itpub.net/12391917/viewspace-257185
玩玩双节棍(l_l)

美丽家乡黄果树瀑布
http://space.itpub.net/12391917/viewspace-244134
只看该作者    顶部
离线 sunfly1983
我以出仓,感觉良好!


精华贴数 0
个人空间 0
技术积分 1191 (1552)
社区积分 1697 (710)
注册日期 2006-10-14
论坛徽章:12
生肖徽章2007版:猪生肖徽章2007版:猪生肖徽章2007版:猪2008北京奥运纪念徽章:皮划艇激流回旋生肖徽章2007版:猪生肖徽章2007版:猪
生肖徽章2007版:鸡生肖徽章2007版:猪2008北京奥运纪念徽章:沙滩排球2008北京奥运纪念徽章:排球  

发表于 2008-9-9 17:40 
强贴帮顶!学习!


只看该作者    顶部
在线/呼叫 newkid
资深新手
老程序员


来自 银河系
精华贴数 2
个人空间 0
技术积分 2778 (579)
社区积分 0 (121048)
注册日期 2004-6-26
论坛徽章:5
生肖徽章2007版:马生肖徽章2007版:鸡2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:羽毛球  
      

发表于 2008-9-9 21:50 


QUOTE:
原帖由 nyfor 于 2008-9-9 10:40 发表

1000次调用和10次调用当然有性能上的区别, 我说的不太重要的原因是说 不会影响到结果的正确性, 也就是说至少不会让我们的代码出现BUG.

嗯,看出来了,你的目标就是没有蛀牙。接下来你也许就会追求美白了

任何秘技和偏方的存在都说明ORACLE的优化器还有可改善的余地。如果11G能够让我们摈弃SELECT (SELECT f(x) FROM DUAL) ... 这种怪怪的写法,那倒是一种进步。


__________________
只看该作者    顶部
在线/呼叫 newkid
资深新手
老程序员


来自 银河系
精华贴数 2
个人空间 0
技术积分 2778 (579)
社区积分 0 (121048)
注册日期 2004-6-26
论坛徽章:5
生肖徽章2007版:马生肖徽章2007版:鸡2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:羽毛球  
      

发表于 2008-9-9 21:54 


QUOTE:
原帖由 dreamroot 于 2008-9-9 10:24 发表
虽然我是菜鸟,但感觉你的研究很无聊和没有必要性。一般很少有人会用dbms_random.value进行随机查询的。而且在dbms_random.value

的确如您所言,where dbms_random.value<dbms_random.value 没有任何实用意义,这纯粹就是为了好玩。其中的乐趣等你多写一些不好玩的代码,就会慢慢体会到了。
这个看似无聊的问题引发了一些有实用意义的探索,其价值参见我#26的结论。
如果你做了几年开发仍然无法体会到这些乐趣和价值,那么恭喜你!你证明了自己适合当领导!


__________________
只看该作者    顶部
离线 小虫08


来自 天津
精华贴数 0
个人空间 0
技术积分 4200 (348)
社区积分 245 (2189)
注册日期 2008-8-8
论坛徽章:25
红宝石萤石蓝锆石紫水晶海蓝宝石祖母绿
数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星数据库板块每日发贴之星

发表于 2008-9-9 22:59 
看得我发晕


__________________
梦想有多远,就能走多远!
只看该作者    顶部
在线/呼叫 newkid
资深新手
老程序员


来自 银河系
精华贴数 2
个人空间 0
技术积分 2778 (579)
社区积分 0 (121048)
注册日期 2004-6-26
论坛徽章:5
生肖徽章2007版:马生肖徽章2007版:鸡2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:羽毛球  
      

发表于 2008-9-10 03:16 
刚才试了下,NO_MERGE HINT确实起作用了,但它不能防止ORACLE把  filter("N"=1) 改写为 filter("PKG"."INC_N"()=1),因此出来的答案总是不对劲。

任何分析函数也能够和ROWNUM一样起作用:

exec pkg.reset_n;

select * from (select pkg.inc_n n, count(*) over() from t) v where n = 1;


__________________
只看该作者    顶部
在线/呼叫 newkid
资深新手
老程序员


来自 银河系
精华贴数 2
个人空间 0
技术积分 2778 (579)
社区积分 0 (121048)
注册日期 2004-6-26
论坛徽章:5
生肖徽章2007版:马生肖徽章2007版:鸡2008北京奥运纪念徽章:垒球2008北京奥运纪念徽章:羽毛球  
      

发表于 2008-9-10 03:54 
能否做几个 9I 下DETERMINISTIC函数的试验?

[ 本帖最后由 newkid 于 2008-9-10 07:34 编辑 ]


__________________
只看该作者    顶部
离线 nyfor
Oracle Fan


来自 苏州
精华贴数 7
个人空间 0
技术积分 8321 (155)
社区积分 478 (1610)
注册日期 2002-1-6
论坛徽章:17
现任管理团队成员     
      

发表于 2008-9-10 09:02 


QUOTE:
原帖由 newkid 于 2008-9-9 21:50 发表


嗯,看出来了,你的目标就是没有蛀牙。接下来你也许就会追求美白了

任何秘技和偏方的存在都说明ORACLE的优化器还有可改善的余地。如果11G能够让我们摈弃SELECT (SELECT f(x) FROM DUAL) ... 这种怪怪的写法,那倒是一种进步。

嗯, 有道理, 刚开始正常书写SQL, 发现结果错误, 理所当然的是先要求结果的正确性, 但当出现性能问题后, 就会去追求所谓的"美白"了


__________________
 
帮助别人,也在帮助自己!
Oracle Version 9.2.0
Oracle Version 10.2.0

看别人不顺眼是自己修养不够!
只看该作者    顶部
相关内容


CopyRight 1999-2006 itpub.net All Right Reserved.
北京皓辰广域网络信息技术有限公司. 版权所有
E-mail:Webmaster@itpub.net
京ICP证:010037号 联系我们 法律顾问