DB2索引设计准则

数据库
以下的文章主要向大家讲述的是DB2 索引设计准则,假如 一个表建有大量索引会影响 INSERT、UPDATE 与 DELETE 语句的性能,如果要对表中的数据更改时,所有索引都须进行适当的调整。

此文章主要讲述的是DB2索引设计准则,以及其在实际操作值得我们大家留意的相关事项的描述,以下就是文章的主要内容的详细解析,望大家会对DB2 索引设计准则有个更好的了解。

另一方面,对于不需要修改数据的查询(SELECT 语句),大量索引有助于提高性能,因为数据库有更多的索引可供选择,以便确定以最快速度访问数据的***方法。

 

1. 组合索引:组合索引即多列索引,指一个索引含有多个列。一个组合索引相当于多个单列索引,如索引(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)

 

以上的相关内容就是对DB2索引设计准则的介绍,望你能有所收获。

 

DB2 索引设计准则

以上的相关内容就是对DB2索引设计准则的介绍,望你能有所收获。

 

【编辑推荐】

  1. DB2 V7存储过程构建环境设置的正确操作步骤描述
  2. DB2在线增量备份 还原增量备份及前滚恢复
  3. DB2 LOAD命令所提供的选项及注册表变量大全
  4. 实现DB2HADRv8.2 EE实施的正确操作步骤
  5. 对整理DB2数据集范围的简介
责任编辑:佚名 来源: 中国IDC圈
相关推荐

2011-03-21 09:51:04

DB2性能优化

2010-11-02 11:36:10

DB2索引创建

2010-11-02 11:22:06

DB2索引类型

2010-11-03 16:01:31

DB2索引的语法

2010-11-04 15:34:20

DB2索引优化

2010-11-02 11:30:09

DB2索引结构

2011-06-20 06:22:18

ibmdwDB2

2010-08-17 17:29:06

DB2性能优化

2010-08-25 10:50:48

DB2数据库

2010-08-04 15:00:06

DB2未使用索引

2010-08-26 11:37:38

DB2命令

2010-11-03 15:49:32

DB2删除表

2010-08-06 17:52:17

DB2未使用索引

2010-08-16 16:08:34

DB2 V9.7

2010-08-02 16:38:39

DB2 UDB for

2011-08-17 20:48:25

索引建立语句非聚集索引唯一索引

2010-08-11 09:14:33

DB2数据类型

2010-08-10 15:30:21

2010-08-16 17:07:43

DB2 trc

2009-07-06 17:34:26

远程复制DB2
点赞
收藏

51CTO技术栈公众号