oracle SQL优化实战经验
来源:互联网 发布:中锐网络股份有限公司 编辑:程序博客网 时间:2024/06/07 22:19
1. 程序中尽量采用preparedstatement方式,减少数据库重复解析SQL的时间
2.编写SQL时要注意表联合的顺序,(oracle从右向左处理表名)建议的顺序为,将小表放在右边。(注:一般这样建议,在oracle 11g对比测试时,差异不大)
3.过滤条件中过滤记录多的条件写在最后面(注:一般这样建议,在oracle 11g对比测试时,差异不大)
4.select子句中避免使用*,最好指定字段名,对于这一点,在oracle 11g经过对比测试没有太明显的性能差异,只是一般这样建议
5.快速删除重复操作记录
delete from emp e where rowid > ( select min(x.rowid) from emp x where x.emp_no=e.emp_no)
6.快速清空表内容
使用truncat table xxtable 的方式,而不是delete from xxtable;
7.控制commit的次数
一般建议达到一定的次数就commit一次,太频繁或者积累了太多再commit都不好;
太频繁的话,则IO高;
积累了太多再commit,则会长时间占用系统资源,如undo表空间等;
8.使用exists替代in,使用表关联方式替代exists。(注:一般这样建议,在oracle 11g对比测试时,差异不大)
1)表关联方式
select a.* from A a,B b where a.name=b.name
2)exists方式
select a.* from A a where exists (select 1 from B b where b.name=a.name)
3)in方式
select a.* from A a where a.name in (select name from B b)
9.查询条件如果带有is null 或者is not null,则不会使用到索引,所以写SQL时需要关注
10.如果字段上有索引,但是查询条件对字段加了函数,则不会使用到索引,对于这种情况,可以在表上对于这个字段增加函数索引。
如 select * from A a where to_char(a.create_date,'yyyymm')='201404'; 则不会使用到create_date字段上的索引;
如果要坚持使用此SQL,可以在 to_char(a.create_date,'yyyymm')上增加索引。
参考资料:http://www.cnblogs.com/rootq/archive/2008/11/17/1334727.html
- oracle SQL优化实战经验
- 与大家共享 SQL优化,编写高效SQL 实战经验
- 与大家共享 SQL优化,编写高效SQL 实战经验
- 与大家共享 SQL优化,编写高效SQL 实战经验
- sql优化经验34条(oracle)
- 浅谈ORACLE SQL语句优化经验
- oracle优化经验一
- oracle优化经验
- Oracle性能优化经验
- SQL数据库优化经验
- sql优化经验分享
- SQL语句优化经验
- sql性能优化经验
- SQL查询优化经验
- SQL优化经验
- sql优化经验记录
- Oracle SQL语句优化技术:解读实战技巧
- 关于oracle优化实战
- JavaScript编写类
- 谈谈架构师的职责(一)
- ORACLE 异常处理
- 【Java语法与C语言的区别】一
- Count and Say
- oracle SQL优化实战经验
- 用hadoop实现SimRank++算法(1)----权值转移矩阵的计算
- 黑马程序员_java的网络学习一_05
- cvSeq的学习
- MIT differential equation---1
- JAVA IO总结
- linux基础知识
- Binary Tree Inorder Traversal
- PhoneGap Android