首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB2存储过程优化器未使用最有效的索引

DB2存储过程优化器未使用最有效的索引
EN

Stack Overflow用户
提问于 2020-04-23 19:45:11
回答 1查看 78关注 0票数 2

我有一个存储过程,它根据p_qds_startTime和p_qds_endTime参数返回数据,这些参数通常设置为365天的报告周期,但是可以将报告周期设置为1天。该过程查询的表有数百万行,其中包含一个包含xml数据的列。

优化器选择对sys_start使用索引,这在365天的报告期内效率非常低。对于较大的报告期,我希望优化器使用与策略状态相关的xml索引,因为只有300,000条记录的策略状态为“Application”。

策略状态索引设置正确,如果我运行底层查询,将输入参数替换为时间戳,则解释计划显示,如果报告周期超过10天,优化器将使用此索引。如果报告期不到10天,它将使用同样需要的sys_start索引。

我的问题是:有没有一种方法可以确保优化器检查输入值并重新评估每次运行时将使用的计划?这是一个每天一次的批处理作业,因此执行此操作的开销并不是一个真正的问题。

将其置于上下文中,批处理作业最多需要10个小时才能运行,而当我在本地运行底层查询时,命中策略状态索引时,它只需要几分钟就能运行。

以下是SP中的底层查询

代码语言:javascript
复制
select 
      policy_number
      ,year_1_commission_amount
from(
select 
      xml_policy.policy_number,
      t002.SYS_START,
      xml_policy.policy_status,
      xml_policy.year_1_commission_amount,
      ROW_NUMBER() over (partition by xml_policy.POLICY_NUMBER order by t002.SYS_START DESC) RN
from 
      DB.t002
      ,xmltable
      (
      '$i/*:AddProtQuoteResponse/*:plan[1]/*:policy[*:policyStatus = "Application"]' passing t002.QDS_XML AS "i"
      columns
      policy_number varchar(30) path '*:policyNumber',
      policy_status varchar(12) path '*:policyStatus',
      year_1_commission_amount decimal(11,2) path ''
      ) as xml_policy
where 
      sys_start > CAST(p_qds_startTime AS TIMESTAMP(12)) 
      and sys_start <= CAST(p_qds_endTime AS TIMESTAMP(12)) 
      and t002.QDS_XML_TYPE_ID = 3 
)
where rn = 1;
EN

回答 1

Stack Overflow用户

发布于 2020-04-23 20:01:01

尝试使用REOPT ALWAYS选项重新绑定例程包:

代码语言:javascript
复制
CALL SYSPROC.REBIND_ROUTINE_PACKAGE ('SP', 'SP_SCHEMA.SP_SPECIFICNAME', 'REOPT ALWAYS');

其中,第2个参数是以下结果:

代码语言:javascript
复制
SELECT RTRIM(ROUTINESCHEMA)||'.'||SPECIFICNAME
--, PARM_COUNT
FROM SYSCAT.ROUTINES R
WHERE ROUTINESCHEMA='SP_SCHEMA' AND ROUTINENAME='SP_NAME';

SP_SCHEMA & SP_NAME -过程的模式和名称。在上面的查询的输出中可能有许多行(如果您有许多例程具有相同的这对),并且您必须选择具有相应特定名称的正确例程。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61386461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档