- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ORACLE简介及编程优化钟元幸 2011-05-30 目录 一、定位 oracle分两大块: 开发 开发主要是写写存储过程、触发器等,需要有较强的逻辑思维和创造能力 。学习过程中在了解完Oracle基本的体系结构之后,可以重点关注PL/SQL及Oracle的开发工具这一部分。 管理 管理则需要对oracle数据库的原理有深刻的认识,有全局操纵的能力和紧密的思维,责任较大 。 对于刚刚毕业的年轻人来说,可以先选择做开发,有一定经验后转型,去做数据库的管理。 二、学习方法 没有最好的,只有适合自己的方法。 问题是成长的源泉。 思考、做实验、笔记。 三、ORACLE体系结构 三、ORACLE体系结构 三、ORACLE体系结构--SGA 三、ORACLE体系结构--PGA PGA(Program Global Area程序全局区) 保存每一个用户进程与Oracle数据库间连接的具体信息,它是Oracle在一个服务进程启动时创建的,是私有的。一个Oracle进程拥有一个PGA内存区。一个PGA也只能被拥有它的那个服务进程所访问,只有这个进程中的Oracle代码才能读写它。 三、ORACLE体系结构--后台进程 三、ORACLE体系结构—Database、实例 四、SQL编程优化--SQL优化器 基于规则的优化器 总是使用索引 总是从驱动表开始(from子句最右边的表) 只有在不可避免的情况下,才使用全表扫描 任何索引都可以 基于成本的优化器 需要表、索引的统计资料 Analyze table customer compute statistics; Analyze table customer estimate statistics sample 5000 rows; 表中设置并行度、表分区 四、SQL编程优化--优化器模式 rule模式 总忽略CBO和统计信息而基于规则 choose模式 Oracle根据情况选择rule or first_rows or all_rows first_rows 模式 基于成本,以最快的速度返回记录,会造成总体查询速度的下降或消耗更多的资源,倾向索引扫描,适合OLTP系统 all_rows模式 基于成本,确保总体查询时间最短,倾向并行全表扫描 四、SQL编程优化—索引 索引的正确使用 在海量数据表中,基本每个表都有一个或多个的索引来保证高效的查询,在ETL过程中的索引需要遵循以下使用原则: (1) 当插入的数据为数据表中的记录数量10%以上时, 首先需要删除该表的索引来提高数据的插入效率,当数据全部插入后再建立索引。 (2) 避免在索引列上使用函数或计算,在WHERE子句中,如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描。举例: 低效: SELECT * ROM DEPT WHERE SAL * 12 25000; 高效: SELECT * FROM DEPT WHERE SAL 25000/12; (3) 避免在索引列上使用NOT和”!=” , 索引只能告诉什么存在于表中,而不能告诉什么不存在于表中,当数据库遇到NOT和”!=”时,就会停止使用索引转而执行全表扫描。 (4) 索引列上用=替代 高效: SELECT * FROM EMP WHERE DEPTNO =4 低效: SELECT * FROM EMP WHERE DEPTNO 3 两者的区别在于,前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。 四、SQL编程优化—游标 游标的正确使用 当在海量数据表中进行数据的删除、更新和插入操作时,用游标处理的效率是最慢的方式,但它在ETL过程中的使用又必不可少,而且使用有着及其重要的地位,所以游标的正确使用尤为重要。 四、SQL编程优化--优化方法列举 SQL优化方法列举 1、DECODE的使用 SELECT COUNT(DECODE(dept_no, 0020, X, NULL)) D0020_count FROM emp 2、表的别名的使用 SELECT E.emp_no, E.name, E.tax_no, C.comp_code, C.comp_name FROM company C, emp E WHERE E.comp_code = C.
文档评论(0)