同一sql,不同参数。却被划分到不同sql_id

【 使用环境 】生产环境
【 OB or 其他组件 】
【 使用版本 4.3.5
【问题描述】


参数 仅有id的 in个数不一致
WHERE
s.id IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
如上。2个sql样本仅传入的参数不同,sqlId不一致。导致调整执行计划时。无法统一调整。

已知参数 cursor_sharing为 FORCE

2 个赞

没生效吧

参数没生效? 这个参数一直是这个默认值。

IN (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)的参数个数一致么

SHOW VARIABLES like ‘version_comment’; 查一下 具体版本信息

in的参数不一样 两个文本 应该也是不一样的
相同文本的 SQL 的 SQL_ID 总是相同的 所以不同的文本下 sql_id也是不一样的

sql_Id不一致,调整执行计划时,确实无法统一调整的。你可以看看能否使用hint的方式,绑定一下。

不一致

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000004479547
你可以看看format_sql_id 是否一致 如果一致也可以使用 FORMAT_SQL_ID绑定执行计划
https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000005438226?back=kb

只有in的个数不一致。就出现了几十甚至几百组sql_id. 这样咋绑定执行计划··

你看看我上面发的 format_sql_id 你看看这样的方式是否可以

用format sql id来绑定,有format outline

学习下

学习下,感觉执行计划应该都一样吧,保是In里面的个数不一样就算两个执行计划么

执行了如上命令。但是没啥用

是否有确定 format_sql_id是否一样 看一下绑定outline是否生效

format_sql_id一致。


查询计划执行表。显示