1、准备实验环境
我们创建了一个模拟tpch(数据库工业标准测试,http://www.tpc.org/tpch/specs.asp)测试的数据库,库中一共有3张数据表,分别是:
part 产品部件表
supplier 供应商表
partsupp 产品供应商关联表
其中part表中含有200000条数据,partsupp表中含有800000条数据,supplier表中含有10000条数据
1) 我们为如上的3张表分别建立如下的索引:
create index part_idx1 on tpcd.part(p_partkey,p_size); create index partsupp_idx1 on tpcd.partsupp(ps_partkey, ps_supplycost, ps_suppkey); create index supp_idx1 on tpcd.supplier(s_suppkey);
|
2) 建立索引后,我们收集一下相关的统计信息,在db2cmd中执行如下的命令:
runstats on table tpcd.part with distribution and detailed indexes all; runstats on table tpcd.partsupp with distribution and detailed indexes all; runstats on table tpcd.supplier with distribution and detailed indexes all;
|
分别对PART, PARTSUPP, SUPPLIER运行以下命令,确保runstats已经成功执行:
db2 “select card,npages,stats_time from syscat.tables where tabname=’PART’”
CARD NPAGES STATS_TIME -------------------- -------------------- ----------------------------------------------------------- 200000 7616 2008-08-21-17.20.22.828000
|
其中,CARD为该表的记录数,NPAGES为该表所占有的存储空间(页数),STATS_TIME为收集统计信息的时间。
2、发现问题
1) 我们有如下的一个SQL语句: