Oracle SQL的调优及表、索引的设计和优化

OracleSQL调优是一个复杂的主题,不过有一些基本的规则是每个Oracle DBA都需要遵从的,这些规则可以改善他们系统的性能。

其实,SQL调优的目标是简单的:

◎消除不必要的大表全表搜索:不必要的全表搜索导致大量不必要的I/O,从而拖慢整个数据库的性能。调优专家首先要根据查询返回的行数目来评价SQL。在一个有序的表中,如果查询返回少于40%的行,或者在一个无序的表中,返回少于7%的行,那么这个查询都可以调整为使用一个索引来代替全表搜索。对于不必要的全表搜索来说,最常见的调优方法是增加索引。可以在表中加入标准的B树索引,也可以加入bitmap和基于函数的索引。要决定是否消除一个全表搜索,可以仔细检查索引搜索的I/O开销和全表搜索的开销,它们的开销和数据块的读取和可能的并行执行有关,并将两者作对比。在一些情况下,一些不必要的全表搜索的消除可以通过强制使用一个index来达到,只需要在SQL语句中加入一个索引的提示就可以了。

◎在全表搜索是一个最快的访问方法时,将小表的全表搜索放到缓存中,确保有一个专门的数据缓冲用作行缓冲。

◎确保最优的索引使用:对于改善查询的速度,这是特别重要的。有时Oracle可以选择多个索引来进行查询,技术人员在调优时必须检查每个索引并且确保Oracle使用正确的索引。它还包括bitmap和基于函数的索引的使用。

◎确保最优的JOIN操作:有些查询使用NESTEDLOOPjoin快一些,有些则是HASHjoin快一些,另外一些则是sort-mergejoin更快。

这些规则看来简单,不过它们占SQL调优任务的100%。

索引的设计与优化是OracleSQL中的重要内容,索引是表的一个概念部分,用来提高检索数据的效率,Oracle使用了一个复杂的自平衡B-tree结构。通常,通过索引查询数据比全表扫描要快。当Oracle找出执行查询Update语句的最佳路径时,Oracle优化器将使用索引。同样在联结多个表时使用索引也可以提高效率。另一个使用索引的好处是,它提供了主键(primary key)的唯一性验证。那些Long或Long Raw数据类型, 你可以索引几乎所有的列。通常,在大型表中使用索引特别有效。当然,你也会发现,在扫描小表时,使用索引同样能提高效率。

近年来,随着金融、电信等行业对Oracle数据库的应用,在Java Web 编程中,OracleSQL的调优及表、索引的设计和优化成为数据库管理员的必做功课。2007年11月10日,在达内名家大讲堂第11期活动中,薛海璐老师讲授了JAVA Web编程中的Oracle SQL语句设计,数据库表和索引的设计及优化,达内全国各地中心有几百名对Oracle数据库技术感兴趣的求学者参加了讲座。

薛老师是美国Oracle OCP协会会员,达内金牌Oracle讲师,亚信公司前DBA。拥有8年Oracle从业经验,在亚信科技(中国)有限公司工作期间,先后参与了联通CDMA计费软件、中国移动计费系统测试、安装及系统调优,并多次为中国电信、中国移动的客户提供Oracle数据库培训。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值