关于Oracle优化策略
来源:互联网 发布:配送拆分直销系统源码 编辑:程序博客网 时间:2024/06/04 18:16
这篇文章是在一本书上看到的,并加上自己的理解,和大家一起分享。。。
Oracle采用两种方式扫描表:
a,全表扫描。这种方式下,oracle会从表的第一个记录按顺序扫描查找数据。
b,采用rowid。这种方式下,oracle采用索引的方式,实现rowid和数据的物理位置之间的联系。通常采用索引可以提高查询速度,但是索引会降低数据的插入和删除速度。因为每次修改数据时,oracle都会重新编排索引。
选择最有效的表名顺序。oracle在处理from字句时,会按照从右到左的顺序处理表,因此最后一个表将被先处理。因此在from字句中有多个表时,需要注意表的顺序。
oracle采用自下向上的顺序处理where子句。因此需要将表连接条件写在其他条件前面,这样可以过滤掉大部分数据。
例如:效率低下的语句
select * from emp e where sal>5000 and job="manager" and 25 <(select count(*) from emp where e.empNo=mgr)
效率高的语句:
select * from emp e where 25<(select count(*) from emp where e.empNo=mgr) and sal>5000 and job="manager"
在select子句中避免使用“*”。oracle在处理“*”时,首先会查询数据字典将“*”转换成对应的列名,这是效率很低下的。
减少访问数据库的次数。当执行每天sql语句时,oracle需要做很多的事情:解析sql语句,估计索引利用率,绑定变量等。因此减少访问数据次数,可以提供效率。
例如:
效率低下的语句:
select * from emp where id=1;select * from emp where id=2;效率高的语句:
select * from emp where id=1 and id=2
删除重复记录最高效的方法(因为使用了rowId):
delete from emp e where e.rowId=(select min(x.rowId) from emp x where x.id=e.id)删除表时使用truncate代替delete。但是使用delete删除时,若事物没有被提交,可以恢复删除的数据。但是使用truncate则不可以。因为truncate是ddl语句,而delete是dml语句。ddl语句会自动提交事务。
在程序中尽量多commit,这样可以释放一些资源。
- 关于Oracle优化策略
- 关于oracle优化的策略等SQL
- Oracle 优化策略
- Oracle 优化策略
- ORACLE SQL 优化策略-1
- ORACLE SQL 优化策略-2
- ORACLE SQL 优化策略-3
- 关于oracle的备份策略
- 关于oracle的备份策略
- 关于oracle的备份策略
- 关于Oracle优化器
- 关于oracle优化实战
- 关于页面优化,js优化、css优化策略
- Oracle数据库系统性能优化策略
- Oracle数据库系统性能优化策略
- Oracle数据库系统性能优化策略
- Oracle数据库系统性能优化策略
- Oracle Index 索引介绍 及 优化策略
- 车载硬件关键名词
- Android_自定义控件
- curl远程获取验证码
- 使用公用表表达式(CTE)简化嵌套SQL
- Can Java classes be declared as static?
- 关于Oracle优化策略
- 散列表分离链接法初始化、插入、删去等操作(c)
- Android广播接收机制(BroadcastReceiver)
- 最优二叉树——哈夫曼树
- IT人生 需要指引
- mysql查看table的记录数目
- Eclipse开发jsp出现乱码问题
- ubuntu 防止ARP攻击
- 关于解决oracle登录:ora-12154:tns:无法解析指定的连接标识符