oracle学习

索引设计准则 
 
作者:未知 时间:2005-09-13 23:42 出处:Blog.ChinaUnix.net 责编:My FAQ 
 
              摘要:索引设计准则
 
 
1. 一个表如果建有大量索引会影响 INSERT、UPDATE 和 DELETE 语句的性能,因为在表中的数据更改时,所有索引都须进行适当的调整。另一方面,对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能,因为数据库有更多的索引可供选择,以便确定以最快速度访问数据的最佳方法。

2. 组合索引:组合索引即多列索引,指一个索引含有多个列。一个组合索引相当于多个单列索引,如索引(ColA, ColB, ColC)至少相当于(ColA)、(ColA, ColB)、(ColA, ColB, ColC)三个索引。

2. 覆盖的查询可以提高性能。覆盖的查询是指查询中所有指定的列都包含在同一个索引(组合索引)中。例如,如果在一个表的 a、b 和 c 列上创建了组合索引,则从该表中检索 a 和 b 列的查询被视为覆盖的查询。创建覆盖一个查询的索引可以提高性能,因为该查询的所有数据都包含在索引自身当中;检索数据时只需引用表的索引页,不必引用数据页,因而减少了 I/O 总量。尽管给索引添加列以覆盖查询可以提高性能,但在索引中额外维护更多的列会产生更新和存储成本。

3. 对小型表进行索引可能不会产生优化效果,因为数据库在遍历索引以搜索数据时,花费的时间可能会比简单的表扫描还长。

4. 应使用 SQL 事件探查器和索引优化向导帮助分析查询,确定要创建的索引。为数据库及其工作负荷选择正确的索引是非常复杂的,需要在查询速度和更新成本之间取得平衡。窄索引(搜索关键字中只有很少的列的索引)需要的磁盘空间和维护开销都更少。而另一方面,宽索引可以覆盖更多的查询。确定正确的索引集没有简便的规则。经验丰富的数据库管理员常常能够设计出很好的索引集,但是,即使对于不特别复杂的数据库和工作负荷来说,这项任务也十分复杂、费时和易于出错。可以使用索引优化向导使这项任务自动化。有关更多信息,请参见索引优化向导。

5. 可以在视图上指定索引。

6. 可以在计算列上指定索引。

7. 避免在索引列上使用IS NULL和IS NOT NULL。避免在索引中使用任何可以为空的列,数据库将无法使用该索引。对于单列索引,如果列包含空值,索引中将不存在此记录;对于复合索引,如果每个列都为空,索引中同样不存在此记录. 如果至少有一个列不为空,则记录存在于索引中。

8. 如果经常检索包含大量数据的表中的少于15%的行则需要创建索引。

9. 衡量索引效率的 95/5 规则:如果查询的结果返回的行数少于表中所有行的5%,则索引是检索数据的最快方法,如果查询的结果超过5%,那么通常使用索引就不是最快的方式。

10.主关键字和唯一关键字所在的列自动具有索引,但外部关键字没有自动索引。


二、索引的特征
    在确定某一索引适合某一查询之后,可以自定义最适合具体情况的索引类型。索引特征包括:

●聚集还是非聚集
●唯一还是不唯一
●单列还是多列
●索引中的列顺序为升序还是降序(索引缺省为升序,但目前多数大型数据库已经能够支持反向索引)
●覆盖还是非覆盖
●还可以自定义索引的初始存储特征,通过设置填充因子优化其维护,并使用文件和文件组自定义其位置以优化性能。
●位映射索引(bitmap) 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle学习曲线是指学习和掌握Oracle数据库技术所需的过程和路径。下面是Oracle学习曲线的一般步骤: 1. 基础知识学习:首先,你需要了解数据库的基本概念和原理,包括关系型数据库、SQL语言以及数据库管理系统的基本功能和特性。 2. SQL语言学习:SQL是Oracle数据库的查询语言,你需要学习SQL语法、查询、插入、更新和删除数据等基本操作。 3. 数据库设计与规范化:学习如何设计和规范化数据库模式,包括的设计、关系建立、主键和外键的定义等。 4. 数据库管理:学习如何安装、配置和管理Oracle数据库,包括创建数据库实例、用户管理、权限控制、备份和恢复等。 5. 高级特性学习:深入学习Oracle数据库的高级特性,如索引优化、查询调优、事务管理、并发控制等。 6. 数据库开发:学习如何使用Oracle数据库进行应用程序开发,包括使用PL/SQL编程语言、存储过程、触发器等。 7. 数据库安全性:了解如何保护数据库的安全性,包括用户认证、权限管理、数据加密等。 8. 性能优化学习如何优化数据库的性能,包括索引设计、查询优化、存储优化等。 9. 数据库扩展:学习如何扩展Oracle数据库,包括分区、集群、备份和恢复策略等。 10. 持续学习和实践:数据库技术不断发展,你需要持续学习最新的Oracle技术和趋势,并通过实践项目来巩固所学知识。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值