DB2优化之:db2expln的使用及实例分析

本文通过一个实际的SQL优化案例,详细介绍了如何使用db2expln分析SQL执行计划,发现并解决问题。在分析过程中,调整了索引策略,显著提升了查询效率,从原先的6秒缩短到1秒以内。通过对执行计划的深入理解,提出合理的索引设计建议,以帮助提升DB2数据库的性能。
摘要由CSDN通过智能技术生成

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语句:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值