BoEing_发布_规范_DB2数据库开发规范.pptVIP

  • 204
  • 1
  • 约 78页
  • 2018-04-05 发布于河南
  • 举报
BoEing_发布_规范_DB2数据库开发规范.ppt

聚簇索引(Clustered Index)的本质是一种物理索引,它定义了一个表的物 理记录是如何存放的。如果一张表定义了聚簇索引,那么这张表的记录将按照聚簇 索引的顺序来存放。如一张表按行号建立了聚簇索引,那么所有行号相同的记录 在物理上紧邻。由此也可以知道,在一张表上只能定义一个聚簇索引。 通过定义聚簇索引,对于按聚簇属性进行查询的语句,可以大大提高查询效率。由于相同聚簇属性的元素在物理上是相邻存放的,数据库系统只要使用较少次数的I/O就可以将所需要的数据读取出来,相对于动态I/O访问将显著减少磁盘访问次数。另外,如果要对查询出的记录按聚簇属性进行排序的话,也可以省去排序的时间。 当然,使用聚簇索引也会有一些局限性,主要就是建立与维护聚簇的开销相当大,对于需要频繁进行增删操作的表就不太适合使用聚簇索引。 Company Logo BoEing_DB2 数据库索引_聚簇索引 如果我们在一张表上没定义聚簇索引的话, DB2缺省将第一个非聚簇索引作为聚簇索引,如果连非聚簇索引也没有的话,那么DB2将把表的第一个字段作为聚簇索引。因此,为了提高数据库的物理访问效率,我们建议对大表必须定义一个聚簇索引。这个聚簇索引如何定义将取决于我们应用访问记录的顺序。例如:如果我们经常按“行号”批量访问数据的话,那么聚簇索引就必须包括“行号”。 ?另外,有一点要注意的是,由于聚簇索引决定了记录的物理顺序,因此我们最好在建表的时候就决定建什么要的聚簇索引,如果要在日后重建聚簇索引的话,将花费大量的时间。 通常表在频繁地增删查改后聚簇率会降低,重组后聚簇率为100%。 【注意:对于大表,必须按常用访问顺序建立聚簇索引。】 Company Logo BoEing_DB2 数据库索引_聚簇索引 非聚簇索引(Non-Clustered Index)是一种逻辑索引,它不影响表的物理存放 顺序,其目的只是提高我们访问数据的速度。我们一般使用的都是非聚簇索引。一张 表上可以定义多个非聚簇索引。非聚簇索引建立的时候应该注意几点: 对比较长的变长字符型或浮点型字段不要建立索引。 对这些字段建立索引,其效率非常低。 对值比较单一的字段也不要单独建立索引。例如如果我们单独对“性别”字段建立索引的话,由于索引值非常少,所以意义也不是很大。 一张表上不要建立太多索引。 虽然索引能加快数据的访问效率,但也要看到,索引需要占用大量的存储空间。 另外,在增删操作的时候也要额外的维护索引,这也会降低这些操作的效率。所以建立索引也要多方权衡。 【注意:适当的建立非聚簇索引。】 Company Logo BoEing_DB2 数据库索引_非聚簇索引 Unique Index是用来保证数据的唯一性,主键上必须创建一个唯一索引; Unique索引上的字段必须定义成非空 NOT NULL ; 对于分区表,如果需要定义分区的唯一索引,这个索引需要包含所有的分区字段 PARTITION BY 。因此,分区主键中必须包含分区字段。 【在DB2 V9中对分区字段在Unique索引中的位置和顺序无要求。】 Company Logo BoEing_DB2 数据库索引_唯一索引 DB2使用索引的几种方式: 第一种,具有键值匹配的索引使用方式 MATCHCOLS 0 ,范围谓词 , , , , LIKE或 BETWEEN 之后匹配终止,遇到不等于谓词,匹配终止; 第二种,无键值匹配的索引使用方式,最常用的是Index Screening方式,例如表T有 索引T C1,C2,C3,C4 ,对于SQL语句: SELECT * FROM Table_Name WHERE col1 1 AND Col3 0 AND col4 2 AND col5 8;其中col3和col4就是Screening谓词,col1是键值匹配谓词,当索引匹配小 于索引字段数的时候,就能发生Index Screening; 第三种,是IN谓词的使用 ACCESSTYPE N ,IN谓词会被DB2优化器优化为多个与谓词; 第四种,是多索引的使用方式 ACCESSTYPE is M, MX, MI, or MU ; 第五种,One-fetch access ACCESSTYPE I1 ,用于MIN,MAX聚集函数; 第六种,INDEX ONLY,所要去的数据都在索引中,不需要访问表数据。 Company Logo BoEing_DB2 数据库索引使用方式 理想的索引使用,主要需要考虑以下几个方面: 在索引中包括WHERE 子句中的所有列,这样,就可以使用索引形成的屏蔽来拒绝结果集中不合格的行。将这些列放在索引的开始部分。这样一来,当对 SQL 语句进行 EXPLAIN 时,就可以产生最大的 MATC

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档