【IT168 技术文档】分区表的访问计划
本实验将研究如何在访问计划中描述分区表:
1.您将更新分区表中的统计信息。
2.您将使用 db2expln 命令并分析结果。
3.您将在执行查看的操作中使用 DB2 命令和 SQL 。
对 LINEITEM 表执行 RUNSTATS 操作:
清单 56. Runstats
db2 runstats on table db2inst1.lineitem
说明以下 SQL 语句并检查说明输出:
清单 57. 说明
db2 “select l_shipdate,sum(l_quantity) from LINEITEM group by l_shipdate”
要进行说明的 SQL 位于 EX4-2.sql 文件,可以使用下面的命令运行该文件:
清单 58. 说明输出
db2expln –d SAMPLE –t –f EX4-2.sql 
图 30. 说明输出
注意:该 SQL 执行了 LINEITEM 表的索引扫描。说明输出中有一个关于表分区的要点需要注意,所访问的表是被分区的,并且在扫描过程中所有数据分区都将被访问。
说明下面的 SQL 语句并检查说明输出:
清单 59. 说明
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 文件中,可使用下面的命令运行该文件:
清单 60. 说明输出
db2expln –d SAMPLE –t –f EX4-3.sql 
图 31. 说明输出
注意:这个 SQL 语句执行了 LINEITEM 表的索引扫描。在本例中,可以看到优化器能够执行数据分区排除操作。在说明输出中要注意的是关于表分区,访问的表是被分区的,将执行分区排除功能以及删除活动数据分区的值。
在本例中,活动的数据分区为 1-2。这里引用的是 syscat.datapartitions 中的序列号(seqno)而不是 describe data partitions 命令中的 PartitionId。
使用下面的 SQL 确定在前面说明示例中活动的分区的名称:
清单 61. 说明
db2 “select seqno,datapartitionname
from syscat.datapartitions
where tabname = ‘LINEITEM’ order by seqno” 
图 32. 分区名称
注意:序列号 1 和 2 分别映射的是 JAN1993 和 JULY1993 分区名称。
改进大型数据库的管理:分区表的访问计划
0
相关文章