本文内容转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7441387.html?templateId=1718516
问题现象
客户向yashandb下发的SQL语句执行时间超过6分钟仍未出结果
问题的风险及影响
SQL语句性能慢,影响客户业务
问题影响的版本
所有的yashandb 22.2版本
23.2版本没有这个问题
问题发生原因
decode函数在执行时判断有误,即使没有匹配到这个分支,这个分支中的子查询依然会被执行
解决方法及规避方式
规避方式:将decode改写为case when
问题分析和处理过程
通过分析如下ddl及最后sql语句的data block访问数量来判断是否有这个问题。
由于表a的pctfree设置了99,所以每个数据块中只有一条记录。此时这个表的全表扫描会有1000个左右的数据块。
对于最后的查询
select decode(rn,1,(select tname from a where tid = b.rn),‘abcd’) from ( select rownum rn