Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1065306
  • 博文数量: 106
  • 博客积分: 9093
  • 博客等级: 中将
  • 技术积分: 2770
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-01 17:22
文章分类

全部博文(106)

文章存档

2014年(1)

2012年(29)

2011年(32)

2010年(20)

2008年(24)

分类:

2008-04-16 11:58:22

分区表的访问计划

本实验将研究如何在访问计划中描述分区表:

  1. 您将更新分区表中的统计信息。
  2. 您将使用 db2expln 命令并分析结果。
  3. 您将在执行查看的操作中使用 DB2 命令和 SQL 。
  1. 对 LINEITEM 表执行 RUNSTATS 操作:



                                
    db2 runstats on table db2inst1.lineitem


  2. 说明以下 SQL 语句并检查说明输出:



                                
    db2 “select l_shipdate,sum(l_quantity) from LINEITEM group by l_shipdate”


    要进行说明的 SQL 位于 EX4-2.sql 文件,可以使用下面的命令运行该文件:



                                
    db2expln –d SAMPLE –t –f EX4-2.sql




    命令窗口

    注意:该 SQL 执行了 LINEITEM 表的索引扫描。说明输出中有一个关于表分区的要点需要注意,所访问的表是被分区的,并且在扫描过程中所有数据分区都将被访问。

  3. 说明下面的 SQL 语句并检查说明输出:



                                
    db2 “select l_shipdate, l_partkey, l_returnflag

    from LINEITEM

    where l_shipdate between '01/01/1993' and '31/08/1993'

    and l_partkey = 49981”


    要进行说明的 SQL 语句位于 EX4-3.sql 文件中,可使用下面的命令运行该文件:



                                
    db2expln –d SAMPLE –t –f EX4-3.sql




    命令窗口

    注意:这个 SQL 语句执行了 LINEITEM 表的索引扫描。在本例中,可以看到优化器能够执行数据分区排除操作。在说明输出中要注意的是关于表分区,访问的表是被分区的,将执行分区排除功能以及删除活动数据分区的值。

    在本例中,活动的数据分区为 1-2。这里引用的是 syscat.datapartitions 中的序列号(seqno)而不是 describe data partitions 命令中的 PartitionId。

  4. 使用下面的 SQL 确定在前面说明示例中活动的分区的名称:



                                
    db2 “select seqno,datapartitionname

    from syscat.datapartitions

    where tabname = ‘LINEITEM’ order by seqno”




    命令窗口

    注意:序列号 1 和 2 分别映射的是 JAN1993 和 JULY1993 分区名称。

阅读(3222) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~