Db2 存储过程中SQL语句优化操作步骤
1、 通过存储过程名称查找到包名
Syscat.procedures 查看所有创建的存储过程
Sysibm. Sysdependencies 查看存储过程创建后生成的唯一标识。“bname”字段显示的是包名。
Syscat.packagedep 查看包与存储过程或函数创建的唯一标识的关系表。
如下SQL可以查找到存储过程所对应的包名及存储过程中SQL语句中使用的表。Bname 字段是表名,pkgname是包名,bschema 是模式名 btype=’T’ 表示查找表 SELECT bname, pkgname, BSCHEMA
FROM syscat.packagedep WHERE btype='T'
AND pkgname in(select bname from sysibm.sysdependencies where dname in (select specificname from syscat.procedures where procname='PBC_CAL_A3302_75_94_A' AND PROCSCHEMA='MTCBDB'))
2、 根据包名得到包的执行计划
db2expln -d sample -c mtcbdb -p P7055336 -s 0 –t –o P7055336.txt
说明: -d sample 数据库 –c mtcbdb 是模式名 –p P7055336 是包名 –t –o P7055336.txt 执行计划输出到 P7055336.txt 文件。db2expln 的命令参数可以通过 db2expln –help 得到。
3、 分析执行计划
根据执行计划中显示成本,以及是否进行全表扫描,得到是否需要创建索引或重写SQL语句。
Db2 提供了db2advis 顾问建议程序。可以将存储过程中SQL语句单独保存为一个SQL文件,使用db2advis 工具得到优化建议。
db2advis -d sample -i 2.sql -t 5 -o 2.advis
db2adivs 命令具体使用可以通过 db2advis –help 得到。
相关推荐: