OracleSQL性能优化方法.docx

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

OracleSQL性能优化方法

Oracle性能优化方法(SQL篇) 1

综述 2

表分区的应用 2

访咨询Table的方式 3

共享SQL语句 3

选择最有效率的表名顺序 5

WHERE子句中的连接顺序. 6

SELECT子句中幸免使用’*.’ 6

减少访咨询数据库的次数 6

使用DECODE函数来减少处理时刻 7

整合简单,无关联的数据库访咨询 8

删除重复记录 8

用TRUNCATE替代DELETE 9

尽量多使用COMMIT 9

运算记录条数 9

用Where子句替换HAVING子句 9

减少对表的查询 10

通过内部函数提高SQL效率 11

使用表的不名(Alias) 12

用EXISTS替代IN 12

用NOTEXISTS替代NOTIN 13

识不低效执行的SQL语句 13

使用TKPROF工具来查询SQL性能状态 14

用EXPLAINPLAN分析SQL语句 14

实时批量的处理 16

综述

ORACLE数据库的性能调整是个重要,却又有难度的话题,如何有效地进行调整,需要通过反反复复的过程。在数据库建立时,就能依照顾用的需要合理设计分配表空间以及储备参数、内存使用初始化参数,对以后的数据库性能有专门大的益处,建立好后,又需要在应用中不断进行应用程序的优化和调整,这需要在大量的实践工作中不断地积存体会,从而更好地进行数据库的调优。

数据库性能调优的方法

调整内存

调整I/O

调整资源的争用咨询题

调整操作系统参数

调整数据库的设计

调整应用程序

本文针对应用程序的调整,来讲明对数据库性能如何进行优化。

表分区的应用

关于海量数据的表,能够考虑建立分区以提高操作效率。建立分区一样以关键字为分区的标志,也能够以其他字段作为分区的标志,但效率不如关键字高。建立分区的语句在建表时能够进行讲明:

createtableTABLENAME(fieldlist)partitionbyrange(PutOutNo)

(partitionPART1valueslessthan(200312319999)partitionPART2valueslessthan(200412319999)

partitionPART3valueslessthan(200512319999) TABLENAME

。。。

建好分区后,数据的逻辑储备方式进行了优化

2003Data

2004Data

2005Data

。。。

如此,在进行大部分数据查询,数据更新和数据插入时,Oracle自动判定操作应该在哪个分区进行,幸免了整表操作,提高了执行的效率

访咨询Table的方式

ORACLE采纳两种访咨询表中记录的方式:

全表扫描

全表扫描确实是顺序地访咨询表中每条记录.ORACLE采纳一次读入多个数据块

(databaseblock)的方式优化全表扫描.

通过ROWID访咨询表

能够采纳基于ROWID的访咨询方式情形,提高访咨询表的效率,,ROWID包含了表中记录的物理位置信息..ORACLE采纳索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系.通常索引提供了快速访咨询ROWID的方法,因此那些基于索引列的查询就能够得到性能上的提高.

共享SQL语句

数据库治理员必须在init.ora中为那个区域设置合适的参数,当那个内存区域越大,就能够保留更多的语句,因此被共享的可能性也就越大了.

当向ORACLE提交一个SQL语句,ORACLE会第一在这块内存中查找相同的语句.那个地点需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等).

共享的语句必须满足三个条件:

字符级的比较:

当前被执行的语句和共享池中的语句必须完全相同.例如:

SELECT*FROMEMP;

和下列每一个都不同SELECT*fromEMP;Select*FromEmp;SELECT*FROMEMP;

两个语句所指的对象必须完全相同:例如:

用户对象名如何访咨询Jacksal_limitprivatesynonymWork_citypublicsynonymPlant_detailpublicsynonymJillsal_limitprivatesynonymWork_citypublicsynonymPlant_detailtableowner

下列SQL语句不能在这两个用户之间

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

该用户很懒,什么也没介绍

认证主体上海海滋实业有限公司
IP属地湖北
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档