`
luoping544
  • 浏览: 8316 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

oracle优化细节自我总结1

阅读更多

    在公司做了半年的oracle的sql语句优化,现在总结一下,方便以后回顾,也希望水友们指正一下,共同进步。

首先不考虑硬件上的瓶颈问题,也不涉及表的分区,只是平时优化sql语句常碰到的细节地方,基于oracle9i。

    从表的连接、索引的使用、记录的排序几个方面先总结一下。

1、表的连接,表连接分为:sort merge join(SMJ)排序合并连接、nested loops(NL)嵌套循环、hash join(HJ)哈希连接。还有一种笛卡尔积连接,就是不加连接条件,那是一种特殊情况。

    其中SMJ首先需要排序,效率比较差,一般不要使用;

    NL方式,最好情况是驱动表(连接的表a,b中a表;b表称作被内部表或被探测表)记录越少越好,也就是外层循环次数少;内部表有唯一索引时也能提高效率(驱动表概念在10g版本后,貌似被取消了);

    HJ方式,效率比较高。(通过索引字段关联)

 

2、索引的使用,有一些比较容易忽视和迷糊的地方,记录在案。

    in(。。。)能使用索引,但是not in(。。。) 不能使用索引;

    >, < , <= , >= 能用索引,但是<> 不能使用索引;

    like ‘abc%’ 能用索引,但是 like ‘%abc%’ 不能使用索引,后导模糊查询才能使用索引;

    function(index_column)=?不能使用索引,除非是函数索引;同时出来一个问题: 不同类型的字段比较时候会类型转换,相当于加了函数,也不能使用索引,需要注意,比如number_index_column = 'abc',不要转换类型,oracle自动加上to_char()函数;

    index_column || 'abc' = ? 和 index_column + 1 = ?也不能使用索引,所以一般写成这样:  index_column = ? - 1,经过运算的列也不能用索引。

    index_column is null不能使用索引,因为b_tree索引不能保存null值。

 

3、记录的排序,排序非常耗时间和资源,所以影响效率,能避免就避免,以下情况会出现排序:

    Order by
    Group by
    Distinct
    Exists子查询
    Not Exists子查询
    In子查询
    Not In子查询
    Union(并集),Union All也是一种并集操作,但是不会发生排序,如果你确认两个数据集不需要执行去除重复数据 操作,那请使用Union All 代替Union。
    Minus(差集)
    Intersect(交集)
    Merge Join,这是一种两个表连接的内部算法,执行时会把两个表先排序好再连接,应用于两个大表连接的操作。

分享到:
评论

相关推荐

    Oracle10g 白皮书之自我管理数据库

    Oracle 10g 是Oracle公司于2003年发布的数据库版本,该版本的一个显著特点就是其强大的自我管理功能,它通过提供一系列的自动化工具和功能,使得数据库的管理更为高效和简便。在本白皮书中,详细介绍了Oracle 10g的...

    ORACLE数据库知识点小结

    ### ORACLE数据库知识点小结 #### 1. ORACLE DATABASE 10g的新特性 - **网格计算数据库**:Oracle 10g引入了网格计算的概念,允许在多个服务器之间共享资源,提高数据库的可用性和性能。 - **优化资源用量**:通过...

    Oracle BI 完整解决方案 Oracle BIEE方案

    1. **数据整合**:Oracle BI通过其数据集成工具如Oracle Data Integrator (ODI) 收集来自多个源的数据,实现数据清洗、转换和加载,确保数据的一致性和准确性。 2. **数据仓库与数据集市**:Oracle BI支持构建高效...

    oracle中JOB总结

    Oracle中的JOB是一个重要的后台机制,用于自动化执行定时任务。...总的来说,Oracle的JOB机制提供了一个强大而灵活的平台,允许数据库管理员和开发人员自动化执行各种定时任务,优化数据库运维流程。

    Oracle ADDM报告指标分析

    ### Oracle ADDM报告指标分析 #### 一、ADDM概览 ADDM(Automatic Database Diagnostic Monitor,自动数据库诊断管理)是Oracle 10g引入...熟练掌握ADDM的使用方法和技术细节,对于Oracle DBA而言是非常有价值的技能。

    Oracle ADW:从业务提速到IT升级.pdf

    1. 自治性:自我管理、自我优化和自我修复,减少了IT运维的工作负担。 2. 高性能:设计用于处理大数据,提供快速的查询和分析速度。 3. 弹性扩展:可以根据业务需求动态调整资源,确保服务的稳定性和效率。 4. 安全...

    Oracle Identity Manager 11g.7z

    在"Oracle IDM PPT"的描述中,我们可以推断这是一个关于Oracle Identity Manager 11g的技术深度讲解的演示文稿,可能涵盖了该产品的核心特性和实施细节。以下是对Oracle Identity Manager 11g关键知识点的详细阐述:...

    oracle ebs sla

    其中,Oracle EBS SLA(Subledger Accounting)作为核心组件之一,负责处理与会计相关的交易细节,并确保这些交易被正确地记录到总分类账中。本文将详细介绍Oracle EBS SLA中的关键概念,包括法律实体(Legal Entity)...

    Oracle Enterprise Content Management Essentials

    2. **实践操作**:通过模拟环境或实验室项目来熟悉Oracle ECM的操作流程和技术细节。 3. **参考资料**: - 官方文档:Oracle官网提供了丰富的技术文档和指南,是获取最新信息的首选来源。 - 认证教材:市面上有...

    基于JSP和Oracle的绩效量化系统设计.pdf

    系统设计涵盖了用户类型和分析结果的应用,例如班组成员可以自我评估,班组长可以全面掌握班组状态,管理层则能据此进行人力资源优化和培训改进。此外,系统还提供了公用账号,促进部门间的信息交流和学习。 4. ...

    Oracle OCP 1Z0 052 PDF 199题 题库

    ### Oracle OCP 1Z0-052 考试知识点详解 #### 一、题目解析 **题目1:ORA-01555: snapshot too old 错误** **场景描述:** 在一个OLTP系统中,用户SCOTT在业务高峰期启动了一个针对大表的查询操作,并执行了大量...

    通用的在线考试系统(jsp+struts+hibernate+oracle).rar

    《通用的在线考试系统:基于JSP、Struts、Hibernate和Oracle的技术实现》 在信息技术高速发展的今天,教育领域的数字化进程也在不断加快。在线考试系统作为教育信息化的一部分,已经成为教学评估的重要工具。本文将...

    12c-optimizer-overview RMOUG

    根据提供的文件信息,本文将详细解析Oracle 12c优化器的新特性及其工作原理,重点关注自适应查询优化、优化器统计信息增强以及SQL计划管理增强等关键知识点。 ### Oracle 12c Optimizer概述 Oracle数据库优化器是...

    10g_ASM_新特征.pdf

    其中,ASM扮演了关键角色,通过提供自动化的存储管理服务,使得数据库管理员能够更加专注于业务逻辑和应用优化,而无需过多关注底层存储细节。 #### 四、9i与10g:对比分析 从Oracle 9i到10g,数据库管理发生了...

    IBM ZOS

    综上所述,IBM ZOS下的DB2迁移指南涵盖了广泛的Oracle到DB2迁移的关键知识点,从基础概念到具体的实现细节均有涉及。这对于希望将现有Oracle数据库迁移到DB2环境的企业来说是非常有价值的参考资料。

Global site tag (gtag.js) - Google Analytics