Oracle 数据库的性能优化
1
2
3
4
5
6
7
|
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 )
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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.
|
1
2
|
DELETE FROM EMP E WHERE E.ROWID > ( SELECT MIN (X.ROWID)
FROM EMP X WHERE X.EMP_NO = E.EMP_NO);
|
1
2
|
SELECT TAB_NAME FROM TABLES WHERE (TAB_NAME,DB_VER) = ( SELECT
TAB_NAME,DB_VER FROM TAB_COLUMNS WHERE VERSION = 604)
|
1
2
|
(高效) SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND EXISTS ( SELECT 1 FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB ')
(低效)SELECT * FROM EMP (基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB' )
|
1
2
3
4
5
6
7
8
9
|
SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,
ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,
ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,
SQL_TEXT
FROM V$SQLAREA
WHERE EXECUTIONS>0
AND BUFFER_GETS > 0
AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS < 0.8
ORDER BY 4 DESC ;
|
1
2
3
4
5
6
|
(低效):
SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D , EMP E
WHERE D.DEPT_NO = E.DEPT_NO
(高效):
SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT ‘X'
FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);
|
1
2
3
4
|
低效:
SELECT … FROM DEPT WHERE SAL * 12 > 25000;
高效:
SELECT … FROM DEPT WHERE SAL > 25000/12;
|
1
2
3
4
|
高效:
SELECT * FROM EMP WHERE DEPTNO >=4
低效:
SELECT * FROM EMP WHERE DEPTNO >3
|
1
2
3
4
5
6
7
8
9
10
11
12
|
高效:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10
UNION
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE REGION = “MELBOURNE”
低效:
SELECT LOC_ID , LOC_DESC , REGION
FROM LOCATION
WHERE LOC_ID = 10 OR REGION = “MELBOURNE”
|
1
2
3
4
|
低效:
SELECT …. FROM LOCATION WHERE LOC_ID = 10 OR LOC_ID = 20 OR LOC_ID = 30
高效
SELECT … FROM LOCATION WHERE LOC_IN IN (10,20,30);
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
低效:
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
UNION
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
高效:
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
UNION ALL
SELECT ACCT_NUM, BALANCE_AMT
FROM DEBIT_TRANSACTIONS
WHERE TRAN_DATE = '31-DEC-95'
|
1
2
3
4
5
6
7
8
|
表DEPT包含以下列:
DEPT_CODE PK NOT NULL
DEPT_DESC NOT NULL
DEPT_TYPE NULL
低效: (索引不被使用)
SELECT DEPT_CODE FROM DEPT ORDER BY DEPT_TYPE
高效: (使用索引)
SELECT DEPT_CODE FROM DEPT WHERE DEPT_TYPE > 0
|
1
2
3
4
5
6
7
8
9
10
11
12
|
低效:
SELECT JOB , AVG (SAL)
FROM EMP
GROUP JOB
HAVING JOB = ‘PRESIDENT '
OR JOB = ‘MANAGER'
高效:
SELECT JOB , AVG (SAL)
FROM EMP
WHERE JOB = ‘PRESIDENT '
OR JOB = ‘MANAGER'
GROUP JOB
|
Oracle 数据库的性能优化相关推荐
- Oracle 数据库表性能优化
Oracle 数据库表性能优化 最近在一次工作过程中,遇到了oralce 表性能慢的问题.一个历史表,一个月将近1000多万的数据量,想查询这个表的数据,只使用了一个简单的语句,却一个多小时都查不出来 ...
- Oracle数据库访问性能优化
一.百万级数据库优化方案 1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中对字段进行 null 值判断 ...
- 面向程序员的数据库访问性能优化法则
面向程序员的数据库访问性能优化法则 特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业 DBA , DBA 在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基 ...
- 数据库mysql性能优化-学习笔记
数据库mysql性能优化 1. 数据库设计范式 2. 常见关系数据库 3. MySQL 的版本 4. mysql存储计划 5 . mysql查询配置 和 设置配置 6 . mysql基本参数 7 .m ...
- 数据库查询性能优化之利器—索引(二)
数据库查询性能优化之利器-索引(二) 在前面一篇文章中谈到适当地建立索引能够大幅度地提升SQL语句查询速度,然而并不是在什么情况下都适合建立索引,下面来谈一下什么情况下适合建立索引.建立什么样的索引以 ...
- mysql获取查询策略语句_MySQL数据库查询性能优化策略
优化查询 使用Explain语句分析查询语句 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句. 通过对查询语句的分析,可以了解查询语句的执行 ...
- Oracle学习总结(8)—— 面向程序员的数据库访问性能优化法则
特别说明: 1. 本文只是面对数据库应用开发的程序员,不适合专业DBA,DBA在数据库性能优化方面需要了解更多的知识: 2. 本文许多示例及概念是基于Oracle数据库描述,对于其它关系型数据库也 ...
- oracle修改数据高性能,oracle数据库的性能调整
oracle是一个高性能数据库软件.用户可以通过参数的调整,达到性能的优化.性能优化主要分为两部分:一是数据库管理员通过对系统参数的调整达到优化的目的,二是开发人员通过对应用程序的优化达到调整的目的. ...
- Oracle数据库中的优化方案
2019独角兽企业重金招聘Python工程师标准>>> 一. 优化oracle中的sql语句,提高运行效率 1. 选择最有效率的表名顺序(只在基于规则的优化器中有效) ORACLE的 ...
最新文章
- 【青少年编程】【四级】词语接龙
- 一遍记住Java常用的八种排序算法与代码实现
- 9.可变参数创建不可变集合
- [LOJ 6288]猫咪[CF 700E]Cool Slogans
- 并发编程-02并发基础CPU多级缓存和Java内存模型JMM
- gin-vue-admin菜单配置教程:父子菜单
- web百度地图 地址解析获取百度地理坐标
- 新款微信壁纸小程序源码 自动采集小米
- Anaconda安装apscheduler库的步骤
- 语言自制教具_学习笔记:蒙特梭利教师必备硬核技能“蒙氏理论+教具制作”...
- 最近在学习Floquet理论,主要是想用于稳定性分析
- TIDSP TMS320F28075 芯片串口烧录软件编写
- CVPR 2020 | 旷视研究院提出优化领域自适应物体检测性能的类别正则化框架
- 从0到1亿美元 ---- PopCap创始人John Vechey自述
- 华东师范计算机科学与技术考研难吗,华东师范大学计算机考研难不难
- python窗口中导入图片_Python3 tkinter基础 Text image 文本框中插入图片
- 计算机文化基础第一章知识点题,计算机文化基础第一章习题与答案
- 微信读书怎么导入txt
- 愿在以后的日子里,即使单枪匹马也能勇往直前
- 18章 资产收益率和风险