`

关于数据库性能优化方面的一些总结之一

 
阅读更多

(1)      选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.
(2)      WHERE子句中的连接顺序.:
ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.
(3)      SELECT子句中避免使用 ‘ * ‘:
ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间
(4)      减少访问数据库的次数:
ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等;
(5)      在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200
(6)      使用DECODE函数来减少处理时间:******************************
使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.

decode (expression, search_1, result_1)
decode (expression, search_1, result_1, search_2, result_2)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)

decode (expression, search_1, result_1, default)
decode (expression, search_1, result_1, search_2, result_2, default)
decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)
 

decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。
以下是一个简单测试,用于说明Decode函数的用法:
SQL> create table t as select username,default_tablespace,lock_date from dba_users;

Table created.

SQL> select * from t;
USERNAME                      DEFAULT_TABLESPACE            LOCK_DATE
------------------------------ ------------------------------ ---------
SYS                            SYSTEM
SYSTEM                        SYSTEM
OUTLN                          SYSTEM
CSMIG                          SYSTEM
SCOTT                          SYSTEM
EYGLE                          USERS
DBSNMP                        SYSTEM
WMSYS                          SYSTEM                        20-OCT-04

8 rows selected.


SQL> select username,decode(lock_date,null,'unlocked','locked') status from t;

USERNAME                      STATUS
------------------------------ --------
SYS                            unlocked
SYSTEM                        unlocked
OUTLN                          unlocked
CSMIG                          unlocked
SCOTT                          unlocked
EYGLE                          unlocked
DBSNMP                        unlocked
WMSYS                          locked

8 rows selected.

SQL> select username,decode(lock_date,null,'unlocked') status from t;

USERNAME                      STATUS
------------------------------ --------
SYS                            unlocked
SYSTEM                        unlocked
OUTLN                          unlocked
CSMIG                          unlocked
SCOTT                          unlocked
EYGLE                          unlocked
DBSNMP                        unlocked
WMSYS
8 rows selected.
 
(7)      整合简单,无关联的数据库访问:
如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)
(8)      删除重复记录:
最高效的删除重复记录方法 ( 因为使用了ROWID)例子:
DELETE  FROM  EMP E  WHERE  E.ROWID > (SELECT MIN(X.ROWID)
FROM  EMP X  WHERE  X.EMP_NO = E.EMP_NO);
 
(9)      用TRUNCATE替代DELETE:
当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)
(10) 尽量多使用COMMIT:
只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少: 
COMMIT所释放的资源: 
a. 回滚段上用于恢复数据的信息. 
b. 被程序语句获得的锁 
c. redo log buffer 中的空间 
d. ORACLE为管理上述3种资源中的内部花费
分享到:
评论

相关推荐

    SQLserver2008 数据库性能优化

    下面我们将从表设计优化、字段设计优化、索引优化、查询优化等方面对 SQL Server 2008 数据库性能优化进行系统的总结。 表设计优化 良好的表设计是数据库性能优化的基础。根据规范化的原则,表设计应当满足规范化...

    SqlServer数据库性能优化详解

    综上所述,SqlServer数据库性能优化是一个涉及多方面的复杂过程。从应用程序设计到数据库设计,再到操作系统层面的优化,每一步都至关重要。通过综合运用各种技术和策略,可以有效地提高Sql Server的性能,确保企业...

    数据库性能优化工具文档

    根据提供的文档信息,本文将详细解析“数据库性能优化工具”的核心功能与操作流程,特别是针对ORACLE和SQL SERVER这两种常见的数据库管理系统(DBMS)的性能优化工具。 ### 一、工具概述 #### 1.1 开发目的 该工具...

    SQL 数据库性能调优方面的总结

    本篇文章将从多个角度探讨如何进行数据库性能优化,并通过具体的策略和技术来帮助读者理解这一过程。 #### 一、数据库调优的重要性及基本原则 数据库调优旨在提高数据库系统的性能,使应用运行得更快更稳定。这...

    最佳实践之一数据库性能优化

    ### 最佳实践之一:数据库性能优化 #### 一、引言 随着信息技术的快速发展,数据库作为数据管理和存储的核心工具,在企业信息化建设中的地位日益凸显。然而,随着业务规模的不断扩大和用户数量的激增,数据库的性能...

    盖国强 数据库性能优化

    本书《Oracle数据库性能优化》是由ITPUB四大技术版主盖国强、冯春培、叶梁和冯大辉联合编著的一部关于Oracle数据库性能优化的经典之作。全书共有30章,分为五个部分,涵盖了Oracle优化的各个方面,从内存优化、I/O...

    Oracle_数据库性能优化

    ### Oracle数据库性能优化知识点 #### 一、Oracle数据库性能优化概览 在《Oracle数据库性能与可扩展性:定量方法》这本书中,作者Henry H. Liu深入探讨了Oracle数据库的性能优化与可扩展性的关键技术和策略。...

    ORACLE数据库性能优化

    ### ORACLE数据库性能优化知识点详解 #### 一、概述 在现代信息技术领域中,数据库作为信息系统的核心组成部分,其性能的好坏直接影响着整个系统的运行效率。ORACLE作为一款广泛使用的数据库管理系统,其性能优化...

    Oracle9i 数据库性能优化

    在IT行业中,数据库性能优化是DBA(数据库管理员)和数据工程师必须掌握的关键技能之一。Oracle9i作为一款功能强大的关系型数据库管理系统,在企业级应用中被广泛采用。对于Oracle9i数据库来说,其性能直接影响到...

    优化SQL Server数据库的经验总结

    在现代企业的信息化建设中,数据库作为信息系统的核心组件之一,其性能的好坏直接影响着整个系统的响应速度和用户体验。SQL Server作为一款广泛使用的数据库管理系统,其优化工作对于提高系统整体性能至关重要。本文...

    DB2数据库性能优化技巧详解.docx

    首先,Bufferpool,即缓冲池,是数据库性能优化的核心之一。缓冲池是内存中用于存储和修改数据库页的地方,通过减少磁盘I/O次数来提高性能。配置合适的Bufferpool大小至关重要。DB2默认的缓冲池IBMDEFAULTBP在创建...

    数据库SQL优化大总结 百万级数据库优化方案

    数据库SQL优化是提高数据库性能的关键步骤之一。以下是数据库SQL优化的大总结,涵盖了百万级数据库优化方案的多个方面。 一、避免全表扫描 在查询中,尽量避免全表扫描,首先应考虑在where及order by涉及的列上...

    Oracle数据库性能及优化分析.pdf

    Oracle数据库性能优化是一项涉及多方面的工作,包括SQL逻辑、硬件配置、数据库参数、数据架构和应用程序等多个层次。通过对这些环节进行综合考虑和针对性优化,可以有效地提升Oracle数据库的性能,满足云计算环境下...

    大型关系型数据库优化探讨.pdf

    减少磁盘I/O操作是提升数据库性能的重要手段之一。可以通过使用高速缓存来存储频繁访问的数据,以及优化数据分布等方式来降低I/O负担。 #### 四、数据库磁盘I/O优化 - **使用高速缓存:** 高速缓存技术可以极大地...

    Oracle数据库的性能优化策略浅析.pdf

    总结以上内容,我们可以得知,Oracle数据库性能优化是一个涉及多方面考虑的综合过程。通过合理利用索引、表分区、优化器模式等技术,以及对SQL语句的精细调整,能够有效提高数据库性能,优化应用程序的用户体验。...

    oracle数据库性能调优(3)

    本篇将继续深入探讨Oracle数据库性能调优的诸多方面,重点关注于嵌套循环执行计划,这是数据库多表操作中常见的连接方式之一。 首先,了解单表执行计划是理解多表执行计划的基础,单表执行计划涉及到了对单个表进行...

    ORACLE数据库设计与优化

    Oracle数据库是全球广泛使用的大型关系型数据库系统之一,它在数据存储、处理和管理方面具有强大的功能。本主题主要探讨Oracle数据库的设计原则和优化策略,以提升系统的性能和效率。 一、数据库设计基础 1. 规范化...

    面向程序员的数据库访问性能优化法则

    数据库性能优化是提高应用程序响应时间和用户体验的关键因素之一。对于程序员而言,掌握一些基础的优化法则可以帮助他们在开发过程中有效地提升数据库访问效率。本文旨在从程序员的角度出发,探讨数据库访问性能优化...

Global site tag (gtag.js) - Google Analytics