查看: 9877|回复: 31

[PL/SQL] 【讨论】关于Oracle PL/SQL优化,一面试题,求助!!!

[复制链接]
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-25 15:44 | 显示全部楼层 |阅读模式
        面试题如下:
        在对数据仓库进行数据分析的时候,经常需要用到临时表,但由于需求不同不能统一定义事务和会话级临时表,有代码如下,请提出你的优化方案(假设每个查询都将查询出数千万条数据):
         create or replace procedure demo1
         as
         begin         

         create table t1 as select * from a;
         ....
         drop table t1;

         create table t2 as select * from b;
         ....
         drop table t2;

         create table t3 as select * from c;
         ....
         drop table t3;

         end;

         请问如果你是后面负责优化这段pl/sql代码,你会怎么做?

                    (请从SQL,PL/SQL开发以及DBA的角度出发,尽可能的优化执行效率和执行性能)
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-25 15:45 | 显示全部楼层
本来放在另一个贴子里的,没人看就重新贴出来专门看下高手们的见解,个人认为这个某些查询可以直接用with as 之类的替代,但是具体的怎么个其他方面优化就不清楚了,没做过DBA,一头雾水,各位大神们!,求助。。。。。。。。。

使用道具 举报

回复
求职 : 数据库开发
认证徽章
论坛徽章:
28
ITPUB学员
日期:2009-10-14 18:49:45至尊黑钻
日期:2015-12-31 11:11:56数据库板块每日发贴之星
日期:2009-10-22 01:01:02优秀写手
日期:2014-04-30 06:00:17ITPUB8周年纪念徽章
日期:2009-10-09 21:30:10马上有车
日期:2014-10-09 10:14:53马上有钱
日期:2014-02-18 16:43:09路虎
日期:2013-10-15 15:38:59林肯
日期:2013-09-12 15:57:33ITPUB 11周年纪念徽章
日期:2012-10-09 18:11:48
发表于 2014-12-25 15:58 | 显示全部楼层
问题看不懂。。缺少nologing?也不明白为什么不能用临时表?

使用道具 举报

回复
求职 : 数据库管理员
认证徽章
论坛徽章:
11
ITPUB社区千里马徽章
日期:2013-06-09 10:15:34懒羊羊
日期:2015-03-04 14:52:11懒羊羊
日期:2015-02-10 13:36:05马上有对象
日期:2015-02-02 12:29:02红宝石
日期:2015-01-19 09:44:10马上有车
日期:2014-11-11 14:16:07马上有车
日期:2014-03-27 15:59:39优秀写手
日期:2014-03-12 06:00:13马上有钱
日期:2014-02-18 16:43:092014年新春福章
日期:2014-02-18 16:43:09
发表于 2014-12-25 15:59 | 显示全部楼层
由于需求不同不能统一定义事务和会话级临时表

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-25 17:05 | 显示全部楼层
风铃中の鬼 发表于 2014-12-25 15:58
问题看不懂。。缺少nologing?也不明白为什么不能用临时表?

应该是说结构不是固定的,可能数据库存在1000个表,每个需求不同,因此不能定义临时表来存个储这样。。,记得不太清楚了,应该是靠怎样避免重复创建表吧

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-25 17:06 | 显示全部楼层
moseslin 发表于 2014-12-25 15:59
由于需求不同不能统一定义事务和会话级临时表

题本身有些问题,可能他这里搞这出应该是看怎样避免创建表,然后删除。。。

使用道具 举报

回复
求职 : 数据库开发
认证徽章
论坛徽章:
28
ITPUB学员
日期:2009-10-14 18:49:45至尊黑钻
日期:2015-12-31 11:11:56数据库板块每日发贴之星
日期:2009-10-22 01:01:02优秀写手
日期:2014-04-30 06:00:17ITPUB8周年纪念徽章
日期:2009-10-09 21:30:10马上有车
日期:2014-10-09 10:14:53马上有钱
日期:2014-02-18 16:43:09路虎
日期:2013-10-15 15:38:59林肯
日期:2013-09-12 15:57:33ITPUB 11周年纪念徽章
日期:2012-10-09 18:11:48
发表于 2014-12-25 17:28 | 显示全部楼层
估计就是想让加个nologing吧??

使用道具 举报

回复
论坛徽章:
533
奥运会纪念徽章:垒球
日期: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
发表于 2014-12-26 01:53 | 显示全部楼层
就算结构是灵活的,也可以定义临时表,多定义几个就是。

使用道具 举报

回复
认证徽章
论坛徽章:
3
优秀写手
日期:2014-11-11 06:00:15沸羊羊
日期:2015-03-04 14:55:412015年新春福章
日期:2015-03-06 11:59:47
发表于 2014-12-26 09:21 | 显示全部楼层
newkid 发表于 2014-12-26 01:53
就算结构是灵活的,也可以定义临时表,多定义几个就是。

应该是这样,可能他这里主要是看PL/SQL优化能力,他们内部可能不希望有太多的临时建表习惯,有他们的替换方法。请问有什么办法可以吧数据查出来,用几次之后就直接跟着事务提交销毁的?

使用道具 举报

回复
论坛徽章:
533
奥运会纪念徽章:垒球
日期: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
发表于 2014-12-26 09:59 | 显示全部楼层
jinaqu 发表于 2014-12-26 09:21
应该是这样,可能他这里主要是看PL/SQL优化能力,他们内部可能不希望有太多的临时建表习惯,有他们的替换 ...

这根本不是PL/SQL代码,这连编译都通不过。存储过程中建表和DROP表是大忌,即使要执行DDL也得用动态SQL。
临时数据可以放在内存数组,但是既然有几千万行,放临时表最好。
有时候根本不用临时表也可以解决问题,但是题目不给出业务逻辑,无法回答。

使用道具 举报

回复

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

本版积分规则 发表回复

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