【Oracle】性能优化
优化原则
1.在select语句中避免使用*
2.使用Truncate清空表
2.1语法
Truncate [table|cluster] shema.[table_name][cluster_name][drop|reuse storage]
- table_name:要清空的表
- cluster_name:要清空的簇名
- drop|reuse storage:表示保留被删除的空间以供该表的新数据使用,默认为drop storage,收回被删除的空间系统。
3.使用ROWID高效删除重复记录
rowid是可以唯一标记记录的物理位置
delete from TMP001 a where rowid not in
(
select max(rowid) from TMP001 b
where a.id=b.id
and a.name=b.name
and a.gender=b.gender
and a.age=b.age
and a.address=b.address
)
4.高效统计表的记录行数
select table_name, t.num_rows, t.last_analyzed from tabs t WHERE table_name=’TABLE_NAME’;
可能统计的不是很准确,在统计前先在command下面执行EXEC dbms_stats.gather_table_stats('【空间名称】','【tablename】',cascade=>true);刷新表中的num_rows
5.尽量多使用commit
commit所释放的资源:
- 回滚段上用于恢复数据的信息,撤销表空间也只作短暂的保留
- 被程序语句获得的锁
- redo log buffer中的空间
- Oracle为管理上述资源的花费
6.使用EXISTS替代IN
在子查询中,[NOT]IN子句将执行一个内部的排序与合并,无论哪种情况,[NOT]IN都是最低效的,因为他要对子查询中的表执行一个全表遍历。
7.修改Oracle中SGA的大小
alter system set sga_max_size=1000M scope=spfile;
此处修改SGA的大小为1000M
8.使用合理的索引
8.1监视索引是否被引用
首先建立索引
create index idx_tmp001_n1 on tmp001(id);
监视

以上结果说明,该索引建立还未使用过,那么我们按照ID查询一次在看看结果,先执行查询语句
select * from tmp001 where id=1
再次监视

此时的结果已经变为YES
9.避免全表扫描
以下情况为全表扫描:
- 所查询的表没有索引
- 需要返回所有的行
- 带like并使用%这样的语句就是全表扫描
- 对索引列使用了函数
- 带有is null、is not null或!=等子句也会导致全表扫描
【Oracle】性能优化的更多相关文章
- 【转载】我眼中的Oracle性能优化
我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...
- 降低磁盘IO使Oracle性能优化(转)
文章转自:http://blog.chinaunix.net/uid-26813519-id-3207996.html 硬件方面虽然只占Oracle性能优化的一个方面(另一方面是软件),但是仍不可忽视 ...
- 我眼中的 Oracle 性能优化
恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...
- oracle性能优化之awr分析
oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...
- Oracle性能优化1-总体思路和误区
最近在看梁敬彬老师关于Oracle性能优化的一些案例,在这里做一些简单的总结 1.COUNT(*)与COUNT(列)哪个更快 drop table t purge; create table t as ...
- Oracle 性能优化的基本方法
Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...
- Oracle性能优化小结
Oracle性能优化小结 原则一.注意where子句中的连接顺序 Oracle采用自下而上的顺序解析where子句,根据这个原理,表之间的连接必须卸载其他where条件之前,哪些可以滤掉最大数量记录的 ...
- oracle 性能优化建议小结
原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHER ...
- 浅谈Oracle 性能优化
基于大型Oracle数据库应用开发已有6个年头了,经历了从最初零数据演变到目前上亿级的数据存储.在这个经历中,遇到各种各样的性能问题及各种性能优化. 在这里主要给大家分享一下数据库性能优化的一些方法和 ...
- Oracle性能优化之查询语句通用原则
作者早期文章 Oracle优化 索引是表的一个概念部分 , 用来提高检索数据的效率, ORACLE 使用了一个复杂的自平衡 B-tree 结构 . 通常 , 通过索引查询数据比全表扫描要快 . 当 O ...
随机推荐
- PostgreSQL 资源
http://blog.163.com/digoal@126/blog/static/163877040201172183022203/ http://m.oschina.net/u/2426299? ...
- Java 内存释放
问题一什么叫垃圾回收机制 垃圾回收是一种动态存储管理技术它自动地释放不再被程序引用的对象按照特定的垃圾收集算法来实现资源自动回收的功能.当一个对象不再被引用的时候内存回收它占领的空间 ...
- 使用 CoreTelephony 框架获取当前网络运营商
CoreTelephony 获取运营商信息,需通过 CoreTelephony.Framework 中的 CTTelephonyNetworkInfo 和 CTCarrier 对象获取,这些都在iOS ...
- 《Windows核心编程》第3章——handle复制相关实验
先写一个程序,用来查看进程的内核对象,这样我们就能比较子进程是否继承了父进程的某个句柄: #include <windows.h> #include <stdio.h> #de ...
- 解决kylin sync table报错:MetaException(message:java.lang.ClassNotFoundException Class org.apache.hive.hcatalog.data.JsonSerDe not found
在kylin-gui中sync表default.customer_visit时报错: -- ::, ERROR [http-bio--exec-] controller.BasicController ...
- jsonConfig使用方法
1.先编写jsonConfig的初始化代码 private JsonConfig jsonConfig; public action构造方法() { jsonConfig = new JsonConf ...
- Android事件分发机制源码分析
Android事件分发机制源码分析 Android事件分发机制源码分析 Part1事件来源以及传递顺序 Activity分发事件源码 PhoneWindow分发事件源码 小结 Part2ViewGro ...
- 在mac上命令行里面如何打开文本编辑器?
在mac上命令行里面如何打开文本编辑器? 在linux命令行terminal上使用gedit直接就可以打开文本文件 那么在mac上面如何操作呢? 使用:open -a TextEdit setti ...
- 你应该知道的30个jQuery代码开发技巧
1. 创建一个嵌套的过滤器 .filter(":not(:has(.selected))") //去掉所有不包含class为.selected的元素 2. 重用你的元素查询 var ...
- IOS UITableView分组列表
UITableView有两种风格:UITableViewStylePlain和UITableViewStyleGrouped.这两者操作起来其实并没有本质区别,只是后者按分组样式显示前者按照普通样式显 ...