当前位置:  数据库>oracle

Oracle 临时表之临时表的应用问题

    来源: 互联网  发布时间:2017-05-12

    本文导语: 网上有人给出了最佳的优化思路是: 1.先将大表中满足条件的记录抽出来生成一张临时表. 2.再将这较小的临时表与另一张较小的表进行关联查询. 先不论思路是否值得商榷,这把临时表当成中转站的做法还是很值得肯定 临时表...

网上有人给出了最佳的优化思路是:

1.先将大表中满足条件的记录抽出来生成一张临时表.

2.再将这较小的临时表与另一张较小的表进行关联查询.

先不论思路是否值得商榷,这把临时表当成中转站的做法还是很值得肯定

临时表本质上就是一种cache的表现形式,Oracle的临时表都是事先建好的

一旦用了临时表,存放的就是和本会话相关的数据

没有人会傻乎乎地用临时表来保存本应该共享的数据

with子查询实际上也是用了临时表,Oracle会替你创建一张临时表

因此临时表的开销WITH子查询也会有。只要把AUTOTRACE打开你就会看到REDO的开销

关于临时表的使用至少会带来两个问题:

1)主查询的执行计划问题

2)额外的写redo的问题

如果,

临时表作为复杂查询条件的中间结果用于主查询,因为临时表里往往只是个别字段的少量数据,1)的问题比较突出;

如果,

临时表作为最终展现前的结果归集,可能临时表会有比较多字段的较多数据,2)的问题比较突出

㈠ 主查询的执行计划问题

9i临时表由于动态采样level 1,还得用hint,10g比较好用

比较复杂的存储过程(比如数据抽取)可能用到临时表,比实体表优势就是redo少,自动清除

对于临时表的缺陷--采样问题,执行计划的问题其实主要是临时表的cardinality的问题

对于临时表方案,建议动态采样。9IR2以后的版本使用DYNAMIC_SAMPLING 参数或hint能基本避免

如写上 HINT强制它采样 /*+dynamic_sampling(t 0) */

cardinality hint分段提示是个比较好的最佳实践

例如:

临时表里的数据量有大起大落的情形,Oracle只会在硬解析的时候做一次取样

当临时表数据量变化之后,原来的执行计划可能已经不是最优的

碰到这种问题建议使用动态SQL

临时表的数据量在插入结束之后可以通过SQL%ROWCOUNT得知

然后在动态SQL里面拼入cardinality提示,这个提示没有必要精确,要不然你就会有无数的硬解析了

建议给它设置的坎是5000, 即1-5000当作5000处理,5001-10000当作10000,

如此类推,CARDINALITY = CEIL(SQL%ROWCOUNT/5000)*5000,

你也可以通过测试调整出一个合理的值


    
 
 

您可能感兴趣的文章:

  • 哪位兄弟用过oracle的J2EE应用服务器IAS?据说“在应用服务器领域:Oracle第一,IBM第二,BEA第三”
  • Oracle、应用服务器(weblogic)一般安装在那个目录下好!
  • 请问保存文章内容的字段应用什么类型的(oracle),急!!!
  • unix通过crontab 定时启动oracle应用程序??????????
  • 成功实现应用程序和Oracle客户端一起打包
  • ORACLE数据库应用开发常见问题及排除
  • Oracle一个用户如何访问其它用户的表应用指南
  • Linux(Oracle系统在上面)系统无缘无故死机 , 可能是由于应用程序引起 , 可是由于重新启动查不到相关信息 , 不知道在哪里有记录系统CPU Lo
  • oracle异常(预定义异常,自定义异常)应用介绍
  • 详解如何应用改变跟踪技术加速Oracle递增备份
  • 用Oracle9ias开发无线应用程序开发者网络Oracle
  • 也谈Oracle 数据库的绑定变量特性及应用
  • Oracle创建主键自增表(sql语句实现)及触发器应用
  • Oracle Table Demo语句应用介绍
  • Oracle应用集成架构不断实现创新
  • Oracle中的树型递归的应用
  • oracle 声明游标(不具备字段)规则应用
  • Oracle数据库及应用程序优化开发者网络Oracle
  • Oracle中自连接和case when,decode的应用
  • Oracle数据库应用程序性能优化探究
  • 问一个简单的问题,我装了oracle 8.05,我并没有发有发现JDBC这个目录,是不是我要下载jdbc for oracle。
  • Linux下的Oracle安装问题(非常问题)
  • Oracle 10g中导出到Oracle 9的问题小结
  • oracle JDBC的问题
  • Suse linux使用oracle问题
  • 请教: Javaswing 和 Oracle JDBC thin 连接的问题
  • oracle版本问题
  • 关于oracle的一个恼火的小问题!
  • Javabeen+oracle的问题
  • 安装ORACLE的问题
  • 再问java 连接oracle 问题,急!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,