`

ORACLE性能优化(三)

阅读更多
8. 使用DECODE函数来减少处理时间


使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.


例如:

SELECT COUNT(*),SUM(SAL)

FROM EMP

WHERE DEPT_NO = 0020

AND ENAME LIKE ‘SMITH%';


SELECT COUNT(*),SUM(SAL)

FROM EMP

WHERE DEPT_NO = 0030

AND ENAME LIKE ‘SMITH%';


你可以用DECODE函数高效地得到相同结果


SELECT COUNT(DECODE(DEPT_NO,0020,'X',NULL)) D0020_COUNT,

COUNT(DECODE(DEPT_NO,0030,'X',NULL)) D0030_COUNT,

SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL,

SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL

FROM EMP WHERE ENAME LIKE ‘SMITH%';


类似的,DECODE函数也可以运用于GROUP BY 和ORDER BY子句中.



9. 整合简单,无关联的数据库访问


如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)

例如:


SELECT NAME

FROM EMP

WHERE EMP_NO = 1234;


SELECT NAME

FROM DPT

WHERE DPT_NO = 10 ;


SELECT NAME

FROM CAT

WHERE CAT_TYPE = ‘RD';


上面的3个查询可以被合并成一个:


SELECT E.NAME , D.NAME , C.NAME

FROM CAT C , DPT D , EMP E,DUAL X

WHERE NVL(‘X',X.DUMMY) = NVL(‘X',E.ROWID(+))

AND NVL(‘X',X.DUMMY) = NVL(‘X',D.ROWID(+))

AND NVL(‘X',X.DUMMY) = NVL(‘X',C.ROWID(+))

AND E.EMP_NO(+) = 1234

AND D.DEPT_NO(+) = 10

AND C.CAT_TYPE(+) = ‘RD';


(译者按: 虽然采取这种方法,效率得到提高,但是程序的可读性大大降低,所以读者 还是要权衡之间的利弊)


10. 删除重复记录

最高效的删除重复记录方法 ( 因为使用了ROWID)


DELETE FROM EMP E

WHERE E.ROWID > (SELECT MIN(X.ROWID)

FROM EMP X

WHERE X.EMP_NO = E.EMP_NO);


11. 用TRUNCATE替代DELETE

当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是

恢复到执行删除命令之前的状况)


而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短.


(译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)



12. 尽量多使用COMMIT


只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:

COMMIT所释放的资源:

a. 回滚段上用于恢复数据的信息.

b. 被程序语句获得的锁

c. redo log buffer 中的空间

d. ORACLE为管理上述3种资源中的内部花费


(译者按: 在使用COMMIT时必须要注意到事务的完整性,现实中效率和事务完整性往往是鱼和熊掌不可得兼)



对该文的评论 人气:4369
black_snail (2003-9-7 19:16:56)

如果DECODE取值为NULL,SUM(NULL)的值是NULL -->如果所有的值都是NULL , SUM(NULL) = NULL 但是只要有一个值不是NULL,SUM() <> NULL 所以原SQL应该没有什么逻辑上的问题

menlion (2003-9-4 12:38:01)

关于第八点的个人看法:如果DECODE取值为NULL,SUM(NULL)的值是NULL,不会正常求和的。可以改成如下所示就好了: SELECT COUNT(DECODE(DEPT_NO,0020,'X',NULL)) D0020_COUNT, COUNT(DECODE(DEPT_NO,0030,'X',NULL)) D0030_COUNT, SUM(DECODE(DEPT_NO,0020,SAL,0)) D0020_SAL, SUM(DECODE(DEPT_NO,0030,SAL,0)) D0030_SAL FROM EMP WHERE ENAME LIKE ‘SMITH%';
分享到:
评论

相关推荐

    oracle数据库性能优化.pdf

    除了上述两点,Oracle性能优化还包括索引的建立与管理,分区策略的运用,回滚段的优化,以及查询执行计划的控制等。索引能加速数据检索,但过度的索引会增加写操作的开销,需权衡利弊。分区策略可将大表分解,提高...

    Oracle性能优化与故障诊断案例分享

    Oracle数据库性能优化与故障诊断是数据库管理中极为重要的两个方面,它们直接关系到企业业务系统的稳定运行和性能表现。在这篇文章中,我们将详细探讨针对Oracle数据库性能问题和故障的诊断案例,并分享如何通过案例...

    Oracle性能优化求生指南

    本书以系统而有效的方式详细阐述了oracle性能优化方面的问题,解决了oracle性能管理所有方面的问题,从而堪称oracle调优的“求生指南”。如果英文好的,那就找英文原版看。此书太大,分了五部分压缩上传,下载时只要把...

    ORACLE SQL性能优化系列

    ORACLE SQL性能优化系列 ORACLE SQL性能优化是数据库管理员和开发者非常关心的一个话题。为了提高数据库的性能,ORACLE 提供了多种优化技术。下面我们将详细介绍 ORACLE SQL 性能优化系列中的一些重要知识点。 一...

    Oracle性能优化绝版好书:高级OWI与ORACLE性能调整

    《Oracle性能优化绝版好书:高级OWI与ORACLE性能调整》这本书深入探讨了Oracle数据库性能优化的关键技术和策略,特别关注了Oracle Wait Interface (OWI)和性能调整的实践应用。OWI是Oracle数据库中用于监控和诊断...

    Oracle性能优化指南

    很抱歉,您提供的文件内容中,关于《Oracle性能优化指南》的标题和描述没有提供具体的详细信息,仅有标题和重复的描述,以及一个与主题无关的Java学习群信息。这不足以形成完整的知识点。为了生成知识点,我需要您...

    ORACLE性能优化工具整理

    Oracle性能优化工具整理 Oracle数据库作为全球广泛使用的商业数据库管理系统,其性能优化对于确保数据库稳定运行、提高应用响应速度至关重要。性能优化不仅需要通过合理设计数据库模式、编写高效SQL语句等手段,而且...

    Oracle性能优化技巧

    ### Oracle性能优化技巧详解 #### 一、引言 Oracle数据库是企业级应用中的核心组件之一,其性能直接影响到业务系统的稳定性和响应速度。本文将详细介绍Oracle性能优化的关键技巧,帮助用户更好地理解和掌握如何...

    oracle性能优化技术内幕

    Oracle性能优化是数据库管理员和开发人员在处理Oracle数据库系统时不可或缺的重要技能。Oracle数据库作为业界广泛使用的数据库管理系统,其性能优化对于提升系统响应速度、降低资源消耗和改善用户体验至关重要。以下...

    oracle性能优化-比较全面

    Oracle性能优化是一个涵盖广泛且至关重要的主题,对于数据库的高效运行和企业级应用的性能提升起着决定性作用。本文将深入探讨Oracle性能优化的两个关键方面:SGA(System Global Area)的Shared Pool优化和Buffer ...

    Oracle性能优化求生指南1

    《Oracle性能优化求生指南》本书作者凭借其20多年的丰富经验,为我们带来了一本系统的、全面的Oracle性能优化手册,用结构化方法帮助读者解决从数据库应用到数据库设计的所有问题。全书分为6部分、23章,实例丰富,...

    oracle性能优化最佳实践

    本文旨在深入探讨Oracle数据库性能优化的最佳实践,包括数据库性能基础、调优方法论、SQL语句调优以及Oracle性能优化解决方案,帮助数据库管理员(DBA)和开发者提升数据库系统的整体效能。 ### 数据库性能基础及调优...

    Oracle性能优化技术内幕part_3

    Oracle性能优化技术是数据库管理员和开发人员在处理大型复杂系统时必须掌握的关键技能。这部分内容主要探讨Oracle数据库的性能调优策略,分为四个部分,本文将聚焦于第三部分。在这个阶段,我们通常会深入到数据库的...

    Oracle性能优化技术内幕.rar

    Oracle性能优化是数据库管理员和开发人员在处理Oracle数据库系统时不可或缺的一项技能。Oracle数据库作为全球广泛使用的数据库管理系统,其性能的高低直接影响到企业的业务运行效率和用户体验。本压缩包文件"Oracle...

    经典书籍:Oracle性能优化技术内幕

    《Oracle性能优化技术内幕》是一本深入探讨Oracle数据库性能调优的专业书籍,旨在帮助数据库管理员、开发人员以及系统架构师理解和解决Oracle数据库在运行过程中可能出现的性能问题。这本书全面覆盖了Oracle性能优化...

Global site tag (gtag.js) - Google Analytics