免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3338 | 回复: 6
打印 上一主题 下一主题

occi,sql查询第一次时间很长,第二次却很短 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-06-11 10:48 |只看该作者 |倒序浏览
同样的sql,只是查询条件的字段内容变化了,实在不知道解决办法,还请高人指点
具体描述:
http://bbs.chinaunix.net/thread-3752034-1-1.html

论坛徽章:
15
射手座
日期:2014-11-29 19:22:4915-16赛季CBA联赛之青岛
日期:2017-11-17 13:20:09黑曼巴
日期:2017-07-13 19:13:4715-16赛季CBA联赛之四川
日期:2017-02-07 21:08:572015年亚冠纪念徽章
日期:2015-11-06 12:31:58每日论坛发贴之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-08-04 06:20:00程序设计版块每日发帖之星
日期:2015-07-12 22:20:002015亚冠之浦和红钻
日期:2015-07-08 10:10:132015亚冠之大阪钢巴
日期:2015-06-29 11:21:122015亚冠之广州恒大
日期:2015-05-22 21:55:412015年亚洲杯之伊朗
日期:2015-04-10 16:28:25
2 [报告]
发表于 2012-06-11 12:26 |只看该作者
本帖最后由 yulihua49 于 2012-06-11 12:44 编辑
rain_fish 发表于 2012-06-11 10:48
同样的sql,只是查询条件的字段内容变化了,实在不知道解决办法,还请高人指点
具体描述:
http://bbs.ch ...

就是要求你在语句中使用绑定变量,而不是使用值。
在OCI或OCCI中,使用绑定变量是一件相当麻烦的事。使用PRO*C就能够自动绑定。
我们为了能够在OCI中简化绑定变量的操作,建立了DAU(Data Access Unit)包装器框架,类似JAVA的Hibernate,
简化了OCI的使用,有兴趣到SDBC QQ群索取源码和说明书。
给你一个例子的结果日志:
OAD_mk_ins sth=0,INSERT INTO CMS_ACC.CM_DIAGRAM (sch_date,line_no,trip_code,trn_ph
y_id,dest_id,tab_no,direction,file_name,count,stations) VALUES (TO_DATE(:1,'YYYYMMDD'), :2, :3, :4, :5, :6, :7,
:8, :9, :10)
2 t_OAD:27814 06/06 15:14'23 loadfile:rows=4631,upd=0,TIMEVAL=269361(微秒)

就是存了4631个记录只消耗了0.269秒。
你可以看看那个语句,它的值,每行都是不同的,但是每个语句都是相同的,因此只解析一次,使得插入这批数据的时间很短。

查询语句也同样:
bind_select:cursor=0,sqlo_prepare=SELECT TO_CHAR(sch_date,'YYYYMMDD') sch_date,line
_no,trip_code,trn_phy_id,dest_id,tab_no,direction,file_name,count,stations FROM CMS_ACC.CM_DIAGRAM WHERE sch_da
te=TO_DATE(:1,'YYYYMMDD')
5 demo:29843 06/11 11:59'48 release_DB_connect tid=1,pool[0].0,USEC=3548462388563805
5 demo:29843 06/11 11:59'48 DiagTrip:read 4631,77261 Rec's TIMEVAL=430709

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
3 [报告]
发表于 2012-06-11 13:18 |只看该作者
回复 1# rain_fish


    看不懂你的需求。。。难道你是要多次查询还像第一次那么慢么?非得那样的话。。你就每次用不同的SQL。。。换换大小写也行。。。。

论坛徽章:
0
4 [报告]
发表于 2012-06-11 15:55 |只看该作者
to407 发表于 2012-06-11 13:18
回复 1# rain_fish


呵呵,我的问题是:为什么第一次时间那么长,是什么原因造成的,不好意思,写的有歧义。

论坛徽章:
0
5 [报告]
发表于 2012-06-11 15:56 |只看该作者
yulihua49 发表于 2012-06-11 12:26
就是要求你在语句中使用绑定变量,而不是使用值。
在OCI或OCCI中,使用绑定变量是一件相当麻烦的事。使用 ...


非常感谢您的回复,在使用occi时已经使用了它的绑定变量功能。
例如:
ap_stmtQueryDomain->registerOutParam(3, OCCINUMBER);

论坛徽章:
2
午马
日期:2015-01-27 11:22:392015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2012-06-11 16:26 |只看该作者
回复 4# rain_fish


    看explain plan。。。这个都得实际情况慢慢分析

论坛徽章:
0
7 [报告]
发表于 2012-06-12 11:12 |只看该作者
回复 6# to407


    只能这样了,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP