Performance DB29.5:substr函数失败,但left函数正常工作

Performance DB29.5:substr函数失败,但left函数正常工作,performance,db2,substr,db2-luw,Performance,Db2,Substr,Db2 Luw,我有这个select语句,但它永远不会结束: select * from table where substr(field,1,3)='001' 但当我将其更改为: select * from table where left(field,3)='001' 它起作用了!因此,我认为这是一个资源问题。现在,我必须修改语句,但我想知道是否有可能通过更改db参数来解决此问题,可能来自: db2 get db cfg ... 传统信息: 数据库版本为9.5(windows) 字段是表的三个关键字段

我有这个select语句,但它永远不会结束:

select * from table where substr(field,1,3)='001'
但当我将其更改为:

select * from table where left(field,3)='001'
它起作用了!因此,我认为这是一个资源问题。现在,我必须修改语句,但我想知道是否有可能通过更改db参数来解决此问题,可能来自:

db2 get db cfg ...
传统信息:

数据库版本为9.5(windows)

字段是表的三个关键字段之一


表内容:863820行

在一条评论中,您询问“我想知道是否可以更改db参数以允许更多可用资源运行第一条语句”

您可以尝试
自动配置

e、 g.
db2使用mem\u%80自动配置apply none


要了解如果您要求Db2使用80%的系统内存,它会有什么建议(或者如果您说
APPLY DB AND DBM
而不是
APPLY NONE
),您确定这个问题是可重现的吗?这似乎不应该发生在我身上。了解您的DB2版本会有所帮助,但我怀疑优化器:
SUBSTR
会迫使系统忽略
字段
上的索引,因为如果起始位置不是一,则无法使用索引。完全我认为一些较新的版本可以检测到启动是一种情况,但这可能是错误的
LEFT
,当然,这是因为优化器可以保证查询查看索引字段的开头。我想知道是否可以更改db参数以允许更多资源运行第一个语句使用db2exfmt或Control Center或Data Studio来比较两个访问计划。你的问题不够详细。“字段”是索引的第一列吗?当两个查询都运行时,您是否比较了等待(锁、资源、i/o等)的时间?您是否尝试过使用index advisor或类似工具优化查询?除非你先诊断出问题,否则调音是愚蠢的。