`
fxmabo
  • 浏览: 6223 次
  • 性别: Icon_minigender_1
  • 来自: 湖北十堰
社区版块
存档分类
最新评论

Oracle sql优化

阅读更多
1> 尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替。
     2> 不用NOT IN 操作符,可以用NOT EXISTS或者外连接+替代。
        注解:Oracle 在执行IN子查询时,首先执行子查询,将查询结果放入临时表再执行主查询。
             而EXIST则是首先检查主查询,然后运行子查询直到找到第一个匹配项。
     3>SELECT子句中避免使用 ‘ * ‘:
        ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的,
这意味着将耗费更多的时间
     4> 不用"<>" 或者"!=" 操作符。对 不等于操作符的处理会造成全表扫描,可以用"<" 或">"代替。
     5> Where子句中出现IS NULL 或IS NOT NULL时,Oracle会停止使用索引而执行全表扫描。
        可以考虑在设计表时,对索引列设置为NOT NULL。这样就可以用其他操作来取代判断NULL的操作。
     6> 当通配符"%" 或者为"_"作为查询字符串的第一个字符时,索引不会被使用。
     7> 如果索引不是基于函数的,那么当在Where子句中对索引列使用函数时,索引不再起作用。
     8> 避免在索引列上使用计算.WHERE子句中,假如索引列是函数的一部分.优化器将不使用索引而使用全表扫描.
        举例:
低效:SELECT … FROM DEPT WHERE SAL * 12 > 25000;
高效: SELECT … FROM DEPT WHERE SAL > 25000/12;
     9> 对数据类型不同的列进行比较时,会使索引失效。
     10> 尽量多使用COMMIT:
       只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:
        COMMIT所释放的资源:
       a. 回滚段上用于恢复数据的信息.
       b. 被程序语句获得的锁
       c. ORACLE为治理上述3种资源中的内部花费
    11>  Oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须写在其他WHERE条件
       之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。
    12> 选择最有效率的表名顺序(只在基于规则的优化器中有效):
      Oracle的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)
      将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。假如有3个以上的
      表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
    13>  Order by 语句中的非索引列会降低性能,可以通过添加索引的方式处理。严格控制在Order By语句
         中使用表达式。
    14>  不同区域出现的相同的Sql语句,要保证查询字符串相同,以利用SGA共享池,防止相同的Sql语句被
         多次分析。
    15>  多利用内部函数提高Sql效率。
    16>  当在Sql语句中连接多个表时,使用表的别名,并将之作为每列的前缀。这样可以减少解析时间。
    17>   优化GROUP BY:
         提高GROUP BY 语句的效率, 可以通过将不需要的记录在GROUP BY 之前过滤掉.
下面两个查询返回相同结果但第二个明显就快了许多.
         低效:
         SELECT JOB , AVG(SAL) FROM EMP GROUP BY JOB HAVING JOB = ‘PRESIDENT' OR JOB = ‘MANAGER'
高效: SELECT JOB , AVG(SAL) FROM EMP WHERE JOB = ‘PRESIDENT' OR JOB = ‘MANAGER' GROUP BY JOB
    18> 用>=替代>
        高效:
        SELECT * FROM EMP WHERE DEPTNO >=4 低效:
       SELECT * FROM EMP WHERE DEPTNO >3 两者的区别在于, 前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的      记录并且向前扫描到第一个DEPT大于3的记录.  

       我们可以总结一下可能引起全表扫描的操作:
            @ 在索引列上使用NOT 或者 "<>"
            @ 对索引列使用函数或者计算
            @ NOT IN操作
            @ 通配符位于查询字符串的第一个字符
            @ IS NULL或者IS NOT NULL
            @ 多列索引,但它的第一个列并没有被Where子句引用。

    访问Table的方式
         Oracle采用两种访问表中记录的方式:
          1)全表扫描
               全表扫描就是顺序地访问表中每条记录。Oracle采用一次读入多个数据块(database block)
           的方式优化全表扫描。
          2)通过ROWID访问表
                你可以采用基于ROWID的访问方式情况,提高访问表的效率,ROWID包含了表中记录的物理
           位置信息。Oracle采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系。通常
           索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高。
分享到:
评论

相关推荐

    oracle SQL优化技巧

    Oracle SQL 优化技巧 Oracle SQL 优化是提高数据库性能的关键技巧之一。以下是 Oracle SQL 优化的 12 个技巧: 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle 的解析器按照从右到左的顺序处理 FROM ...

    oracle sql优化

    在Oracle数据库环境中,SQL优化是提升系统性能的关键环节。它涉及到如何有效地检索数据,减少查询时间,减轻数据库服务器的负载,以及改善整体系统的响应速度。本文将深入探讨Oracle SQL优化的相关知识点,帮助你...

    Oracle SQL优化文档

    Oracle SQL优化文档提供了对Oracle数据库进行SQL语句优化的一系列方法和工具,旨在帮助数据库管理员和开发人员提高SQL查询性能和数据库效率。文档内容涵盖了从基本的SQL优化思路到具体的分析工具,详细介绍了如何...

    OracleSQL的优化.pdf

    Oracle SQL 优化 Oracle SQL 优化是数据库性能优化的关键部分。为了提高数据库的性能,我们需要从五个方面进行调整:去掉不必要的大型表的全表扫描、缓存小型表的全表扫描、检验优化索引的使用、检验优化的连接技术...

    oracle sql优化100条

    ### Oracle SQL优化100条概览 在Oracle数据库管理与优化领域,SQL查询的效率直接关系到系统性能和用户体验。以下将详细解读部分Oracle SQL优化原则,涵盖查询执行计划、表扫描方式、SQL语句优化及数据访问顺序等...

    Oracle SQL 优化与调优技术详解-附录:SQL提示

    在Oracle数据库中,SQL优化是一个至关重要的环节,它能够显著提高数据库查询的效率和性能。本文将详细介绍Oracle SQL中的“提示”(HINT)技术,这是Oracle SQL优化中使用的一项辅助手段,通过为查询提供额外的优化...

    oracle sql优化实战案例

    主要讲述oracle sql 的开发以及优化,对低效率的sql的优化方法和诊断技巧

    ORACLE SQL优化工具sqlhc

    Oracle SQL优化是数据库管理中的关键任务,用于提升查询性能,减少资源消耗,进而改善整体系统效率。`SQLHC`(SQL Health Check)是Oracle提供的一种实用工具,它可以帮助DBA(数据库管理员)诊断和优化SQL语句。在...

    落落 Oracle SQL优化与改写培训教程

    大量优化实战方法:将主要SQL优化点一一剖析,分享大量SQL优化的实际工作经验 50余改写调优案例:覆盖大多数DBA日常工作场景,具有相当大的实用价值 技巧+案例:可以作为DBA的参考手册,也可以作为开发人员编写SQL...

    Oracle sql优化.pdf

    Oracle SQL 优化 Oracle SQL 优化是指通过调整和优化 SQL 语句、数据库服务器设置和应用程序配置来提高数据库性能的过程。该过程涉及到多个方面,包括 SQL 语句优化、索引优化、数据库服务器配置优化、应用程序...

    ORACLE SQL 优化 存储过程 PROCEDURE

    ORACLE SQL 优化存储过程 PROCEDURE ORACLE SQL 优化存储过程 PROCEDURE 是一篇结合实际开发经验和理论知识的文章,旨在帮助开发者提高 SQL 开发效率和优化存储过程。文章涵盖了广泛的知识点,从基本的 SQL 语句到...

    Oracle SQL优化法则

    Oracle SQL优化是数据库管理的关键环节,它涉及到提升SQL语句执行效率,降低资源消耗,从而提高整体系统性能。以下是对Oracle SQL优化53个规则的详细解读,主要围绕选择优化器、访问表的方式、共享SQL语句这三大方面...

    oracle sql优化语句

    Oracle SQL 优化是数据库管理...总的来说,Oracle SQL优化涉及到对数据库行为的深入理解,包括优化器的工作原理、索引的使用策略以及执行计划的选择。通过恰当的配置和调优,可以大大提高数据库系统的性能和响应速度。

    oracle sql优化分享案例

    oracle sql案例的分享ppt,具体调优和改写sql的例子

    Oracle sql 优化实例

    不错的东东,通俗易懂,建议学习.赶紧下载吧

    oraclesql优化_Oracle中优化SQL的原则.pdf

    oraclesql优化_Oracle中优化SQL的原则.pdf

    大牛出手Oracle SQL优化实例讲解

    10.基于基本的优化CBO 11.如何统计数据库数据 12.Oracle如何统计操作系统数据 13./*+parallel(t,4)*/在大表查询性能的提现 14.CRAS和create insert的性能测试 15.增加字段时指定default值和先增加再update哪个性能好...

    OracleSQL优化初步

    在Oracle数据库管理中,SQL优化是一项至关重要的任务,它直接影响到数据库系统的性能和效率。"Oracle SQL优化初步"这个主题涵盖了DBA们在日常工作中必须掌握的基础知识和技巧。SQL优化的目标是通过改进查询结构、...

    高清完整版 Oracle 高性能SQL引擎剖析SQL优化与调优机制详解

    Oracle的SQL优化与调优机制复杂多样,涵盖了从SQL语句的编写、执行计划的选择、到资源管理的全方位调优方法。为了深入理解Oracle SQL优化与调优机制,需要掌握以下几个核心知识点。 首先,要掌握Oracle SQL的基本...

    Oracle SQL优化的53个黄金法则

    Oracle SQL优化是数据库管理中的关键任务,以确保高效的数据检索和整体系统性能。本文将深入探讨53个黄金法则中的几个关键原则,帮助你优化Oracle SQL查询。 1. **选择合适的优化器**: - ORACLE提供三种优化器:...

Global site tag (gtag.js) - Google Analytics