OracleSQL性能优化方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

OracleSQL性能优化方法

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

1综述 (2)

2表分区的应用 (2)

3访咨询Table的方式 (3)

4共享SQL语句 (3)

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

6WHERE子句中的连接顺序. (6)

7SELECT子句中幸免使用’*’ (6)

8减少访咨询数据库的次数 (6)

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

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

11删除重复记录 (8)

12用TRUNCATE替代DELETE (9)

13尽量多使用COMMIT (9)

14运算记录条数 (9)

15用Where子句替换HA VING子句 (9)

16减少对表的查询 (10)

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

18使用表的不名(Alias) (12)

19用EXISTS替代IN (12)

20用NOT EXISTS替代NOT IN (13)

21识不低效执行的SQL语句 (13)

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

23用EXPLAIN PLAN 分析SQL语句 (14)

24实时批量的处理 (16)

1综述

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

数据库性能调优的方法

●调整内存

●调整I/O

●调整资源的争用咨询题

●调整操作系统参数

●调整数据库的设计

●调整应用程序

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

2表分区的应用

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

create table TABLENAME()

partition by range (PutOutNo)

(partition PART1 values lessthan (200312319999)

partition PART2 values lessthan (200412319999)

。。。。。。

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

3访咨询Table的方式

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

●全表扫描

全表扫描确实是顺序地访咨询表中每条记录. ORACLE采纳一次读入多个数据块(database block)的方式优化全表扫描.

●通过ROWID访咨询表

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

4共享SQL语句

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

当向ORACLE 提交一个SQL语句,ORACLE会第一在这块内存中查找相同的语句.

那个地点需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等).

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

●字符级的比较:

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

SELECT * FROM EMP;

和下列每一个都不同

SELECT * from EMP;

Select * From Emp;

SELECT * FROM EMP;

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

例如:

用户对象名如何访咨询

Jack sal_limit private synonym

Work_city public synonym

Plant_detail public synonym

Jill sal_limit private synonym

Work_city public synonym

Plant_detail table owner

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

select max(sal_cap) from sal_limit;

缘故

每个用户都有一个private synonym - sal_limit , 它们是不同的对象

下列SQL语句能在这两个用户之间共享.

select count(*) from work_city where sdesc like 'NEW%';

缘故:两个用户访咨询相同的对象public synonym - work_city

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

select a.sdesc,b.location from work_city a , plant_detail b where a.city_id = b.city_id

缘故:用户jack 通过private synonym访咨询plant_detail 而jill 是表的所有者,对象不同.

两个SQL语句中必须使用相同的名字的绑定变量(bind variables)

1.

select pin , name from people where pin = :blk1.pin;

select pin , name from people where pin = :blk1.pin;

2.

select pin , name from people where pin = :blk1.ot_ind;

select pin , name from people where pin = :blk1.ov_ind;

相关文档
最新文档