`

oracle 调优

阅读更多

 

1   Oracle 调优:

       1 在数据量比较大的表上建立相关索引   ----create    index  abc_b_index  on abc b ;

 

   2 sql 语句的调优:

            1 > where 语句查询数据的时候将数据量大的条件放在 where 最后   oracle 查询自上向下 where name='john' and  sal>1000 交换后就会影响效率

            2 > select 语句避免使用 *

     3> 减少访问数据库的次数

          select ename ,job, sal from emp where empno=34; select ename ,job,sal from emp where=35;

         ->select ename,job,sal from emp where empno=34 or empno=35;

     4> 采用 decode 函数 :decode( 条件 , 1, 翻译值 1, 2, 翻译值 2……, 缺省值 )

           if( 条件 = 1){

return 翻译值 1;}else if( 条件 = 2){

return 2}else{

      return 缺省值 }

 

Select count(*),sum(sal) from emp where ename='smith' and deptno=20;

Select count(*),sum(sal) from emp where ename='smith' and deptno=10;

 

->select count(decode(deptno,10,'x',null)) d10_count,

         count(decode(deptno,20,'x',null)) d20_count,

    sum(decode(deptno,10,sal,null)) d10_sum,

    sum(decode(deptno,20,sal,null)) d20_sum,

    from emp where ename='smith'

5> 删除重复记录      

      oracle 中在查询的结果集中没条数据都有一个 rowid 是唯一的,及时所有数据字段内容都相同 rowid 也不会相同只要找到最大的 rowid 就能删除全

       部重复数据                      

        方法一   -> 创建一个相同备份表          create table table_test_temp as select * from tbl_test;

   -> 在原有表中加记录               insert into tbl_test select * from tbl_test;

  -> 查询重复记录信息               select id,name,pid ,count(*) from tbl_test group by id,name ,pid having count(*)>1

  -> 删除重复记录                      delete from tbl_test_temp x where x.rowid <(select max(rowid) from tbl_test_temp e

                                                      where  x.id=e.id)            

 

     方法二   -> 临时表保存不重复数据           create table  temp as select  distinct * from tbl_test_temp

-> 丢弃原来的表                                 drop  table tbl_test_temp;

-> 创建原来的表                                create table tbl_test_temp as select * from temp;

-> 丢弃临时表                                    drop  table  temp

 

6> truncate  代替 Delete

                    当用 delete 删除记录的时候,如果没有执行 commit 提交事务,回滚段( rollback segments )可以保存 delete 的数据

                    oracle 可以恢复到 delete 之前的状态,运用 truncate 时,回滚段不再放任何可以被恢复的数据   当执行命令是立即彻底

                    删除,占很少的资源

         7> 尽量多用 commit        

                   commit 可以释放资源     包括贵滚段恢复数据的空间   ;被程序语句获得的锁; redo  log  buffer 中的空间

         8> count(*) 要比 count(1)

         9> where 子句代替 having 子句   能减少 having 的开销   having 是在 groupby 的基础上进行查询的

        10> 在子查询语句中尽量减少对表的查询

                   select * from emp where deptno in(select deptno form dept where loc like 'new york' ) or deptno in (select deptno

from dept where dname like 'sales')

select *  from emp where deptno in (select deptno from dept where loc like 'newyork' or dname like 'sales')

11> Exist in(not exist not in)

in 是把外表和那表作 hash join ,而 exists 是对外表作 loop ,每次 loop 再对那表进行查询。这样的话, in 适合内外表都很大的情况, exists 适合外表结果集很小的情况。 in 是把外表和那表作 hash join ,而 exists 是对外表作 loop ,每次 loop 再对那表进行查询。

如: select * from emp where deptno in (select deptno from dept)

(或者) select * from emp where exists(select 'x' from dept where dept.deptno=emp.deptno)

分析如下:

Select * from T1 where x in ( select y from T2 )

执行的过程相当于 :

select *   from t1, ( select distinct y from t2 ) t2

where t1.x = t2.y;

select * from t1 where exists ( select null from t2 where y = x )

执行的过程相当于 :

for x in ( select * from t1 )

   loop

      if ( exists ( select null from t2 where y = x.x )

      then

         OUTPUT THE RECORD

      end if

end loop

  T1 不可避免的要被完全扫描一遍

分享到:
评论

相关推荐

    oracle调优工具.rar

    本压缩包“oracle调优工具.rar”提供了一系列的资源,帮助用户理解和实践Oracle数据库调优。 首先,"lab128.cnt"可能是一个实验或教程的配置文件,它可能包含了一系列的调优步骤和练习,帮助用户通过实际操作来学习...

    ORACLE调优文档总结

    以下是对标题"ORACLE调优文档总结"和描述中所述知识点的详细说明: 1. **数据库参数设置**: Oracle数据库的性能很大程度上取决于其配置参数。例如,`SGA (System Global Area)` 包含了共享池、数据缓冲区高速缓存...

    Oracle调优总结

    Oracle 调优总结 Oracle 调优是数据库管理员和开发人员日常工作中的一个关键部分。只有当数据库的性能达到最佳状态时,才能确保业务的顺利运行。下面总结了 Oracle 调优的一些关键点: 一、了解表结构和索引情况 ...

    开Oracle调优鹰眼,深入理解AWR性能报告2.part1

    开Oracle调优鹰眼,深入理解AWR性能报告2.part1

    oracle调优pdf文档(英文)

    这个“Oracle调优PDF文档”包含了由武汉支点、大唐集团和甲骨文中国在2012年11月9日共同分享的专业知识。在武汉光谷乐华商务大厦的活动中,专家们探讨了如何优化Oracle数据库性能,以提高系统效率和响应速度。 首先...

    Linux内核参数调整及ORACLE调优参数

    Linux内核参数调整及ORACLE调优参数

    Oracle调优实战.doc

    Oracle 调优实战 Oracle 调优实战是一份详细的 Oracle 数据库性能调整指南,涵盖了从服务器运行状况分析到 SQL 语句优化的多个方面。本文档主要分为六大部分:服务器运行状况分析、必备工具、性能调整、TOPSQL 分析...

    开Oracle调优鹰眼,深入理解AWR性能报告1.part3

    开Oracle调优鹰眼,深入理解AWR性能报告1.part3

    RHEL官方Oracle调优手册

    ### RHEL官方Oracle调优手册知识点详述 #### 一、引言 《RHEL官方Oracle调优手册》是一份由Red Hat公司发布的官方文档,旨在为运行在Red Hat Enterprise Linux (RHEL)上的Oracle数据库提供性能调优指导。这份手册...

    Oracle调优(入门及提高篇)

    Oracle调优是一个涉及多方面的复杂任务,旨在优化数据库性能,以满足业务需求并提升系统效率。在Oracle调优中,有五个主要的方面需要关注,包括外部调整、Row re-sequencing、Oracle SQL调整、Oracle排序调整以及...

    Oracle调优简要手册

    以下是一些针对Oracle调优的关键点,特别是关于Shared Pool的优化,这部分在《Oracle 调优简要手册》中被重点关注。 1. **Shared Pool Tuning**: - **Shared Pool** 是Oracle SGA(System Global Area)的一部分...

    Oracle调优实战执行计划

    ### Oracle调优实战执行计划详解 #### 一、执行计划的重要性 执行计划是Oracle数据库引擎在执行SQL语句时所采用的一系列策略和技术的集合,它决定了如何从表或索引中检索数据、如何处理这些数据,以及如何将它们...

    Oracle调优

    Oracle调优是一门专业性强的技术,旨在通过一系列手段优化Oracle数据库的性能,确保其高效稳定地运行。Maclean Liu技术分享的“Oracle调优鹰眼”系列讲座是深入分析和讲解Oracle数据库调优技巧的讲座。本次分享的第...

    Oracle 调优

    ### Oracle调优实战指南 #### 一、理解Oracle调优的重要性 在数据库管理与应用开发领域,Oracle数据库因其强大的功能和广泛的应用而受到青睐。然而,随着数据量的增长和技术复杂性的提升,如何确保Oracle数据库的...

    oracle 调优经验总结(转发)

    在进行Oracle调优时,首先需要理解调优的目标和责任分工。系统调整的主要参与者包括应用设计人员、应用开发人员、数据库管理员(DBA)以及硬件/软件管理人员。每个角色都有其独特的职责,例如: 1. 应用设计人员需...

    DBA应遵循的Oracle调优原则.doc

    本文将探讨DBA在Oracle调优过程中应遵循的基本原则,包括外部调整、行重排序、SQL调整、排序优化以及竞争调整。 首先,**外部调整**涉及到对运行Oracle数据库的服务器进行优化。这包括对CPU、内存和网络资源的评估...

    oracle调优STA无脑命令

    文档为oracle调优的STA无脑命令,直接安装命令贴到sqlplus里面就好,sql_id号从awr报告里面获得,想调优的语句找到sql_id,替换到文档里面的sql_id位置,最后无脑贴进去就可以使用STA调优助手了。

    DBA应遵循的Oracle调优原则

    本文主要探讨了几个Oracle调优的核心原则,包括外部调整、行重排序、SQL调整、排序优化以及竞争调整。 首先,外部调整关注的是数据库运行的硬件和操作系统环境。CPU资源对数据库性能至关重要,当查询需求超出服务器...

    DBA 应遵循的 Oracle 调优原则

    本文将详细介绍Oracle调优过程中应当遵循的关键原则,包括SQL语句优化、服务器配置调整等方面。 #### 一、SQL语句优化 **1.1 Row Re-Sequencing与降低I/O** Row re-sequencing是指当数据行在磁盘上存储的物理顺序...

Global site tag (gtag.js) - Google Analytics