浏览 4224 次
锁定老帖子 主题:oracle操作基本调优 工作笔记
精华帖 (0) :: 良好帖 (0) :: 新手帖 (9) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-25
1.insert,2.delete,3.update,4.select 1.insert没什么优化的地方。 2.数据库优化包括很多方面,oracle本身和SQL优化是最基本的了,由于没有机会接触到oracle本身的调优处理工具,所以没办法调了,这里主要是介绍SQL的基本调优。 一般性能损耗主要取决于where条件,所以主要部分是在这里,主要过程应该是逐步的减小结果集来提高性能。具体做法如下,仅供参考。 1.约束严格的放在第一位,相当于=放前面,当要知道它所得到的结果集做小。 2.有索引的字段放前; 3.开销小的放前,一般in开销比较大,还有连表查询的条件,t1.id=t2.id 4.减少计算,使用索引,如x-columnA>y=>x-y>columnA=>常量>A 5.减少连表查询,有必要的话分布查询; 6.建立临时表处理大数据量的统计。如建立job定时执行用于处理排行的功能,以提供性能。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-25
ORACLE的WHERE子句采用自下而上的顺序执行,所以约束严格的应该放在where子句的结尾。
其他的数据库的执行顺序请达人说说,以免初学者看到了产生误导 |
|
返回顶楼 | |
发表时间:2008-04-26
不用in,用exists代替
取值范围小的字段用bitmap索引 表和索引放在不同的表空间 定期重建索引 insert要考虑索引,因为新插入的记录要计算其索引位置,如果大量数据批量插入,则每插入一条都要计算所有相关的索引 |
|
返回顶楼 | |
发表时间:2008-04-30
说的非常有价值,谢谢!
|
|
返回顶楼 | |
发表时间:2008-04-30
Libra Man 写道 数据库操作主要包含如下操作:
1.insert,2.delete,3.update,4.select 1.insert没什么优化的地方。 2.数据库优化包括很多方面,oracle本身和SQL优化是最基本的了,由于没有机会接触到oracle本身的调优处理工具,所以没办法调了,这里主要是介绍SQL的基本调优。 一般性能损耗主要取决于where条件,所以主要部分是在这里,主要过程应该是逐步的减小结果集来提高性能。具体做法如下,仅供参考。 1.约束严格的放在第一位,相当于=放前面,当要知道它所得到的结果集做小。 2.有索引的字段放前; 3.开销小的放前,一般in开销比较大,还有连表查询的条件,t1.id=t2.id 4.减少计算,使用索引,如x-columnA>y=>x-y>columnA=>常量>A 5.减少连表查询,有必要的话分布查询; 6.建立临时表处理大数据量的统计。如建立job定时执行用于处理排行的功能,以提供性能。 你说的这些早就是老黄历了,现在oracle9i及以上都不需要这些过时的技巧了。 你说的这些基本上属于RBO(rule based optimization),而"现代"(近5年?)的数据库基本上都才用CBO(cost based optimization),即按实际消耗来优化查询计划,也就是根据表的统计数据(包含共有多少条记录等信息)来优化。 RBO对编程的影响太大,需要按你说的那些去小心修改where条件顺序; 而CBO则跟你的where条件顺序基本上无关了。 我现在用的MySQL5也是CBO的,这个是大势所趋,除非你还在用很老版本(10年前?)的数据库,否则不需要关注这些东西,它们已经过时了。 |
|
返回顶楼 | |