sql不建议绑定变量,使用硬解析的场景

栏目:eas cloud知识作者:金蝶来源:金蝶云社区发布:2024-09-22浏览:1

sql不建议绑定变量,使用硬解析的场景

问题描述:

sql不建议绑定变量,使用硬解析的场景

解决方案:

绑定变量能解决数据库硬解析过多的问题,循环执行的sql建议使用绑定变更,能减少资源消耗,绑定变量形式会记录第一次执行时的执行计划,在已知可能产生极端数据的情况不建议使用绑定变量。

循环里:

select xxx from t_bd_material where fnumber = AAA

select xxx from t_bd_material where fnumber = BBB


绝大部分情况建议写成

select xxx from t_bd_material where fnumber =


特殊情况不同查询条件过滤差异非常大,使用绑定变量会导致执行计划不合理

select * from t_bd_material m left join t_im_inventorybalance inv on m.fid = inv.fmaterialid

where m.FMATERIALGROUPID = 'p4AAAAB6jUXHn8BC' AND inv.fcompanyorgunitid = 'p4AAAAAABUnM567U'

select * from t_bd_material m left join t_im_inventorybalance inv on m.fid = inv.fmaterialid

where m.FMATERIALGROUPID = 'p4AAAAAAd2LHn8BC' AND inv.fcompanyorgunitid = 'p4AAAAASoejM567U'

select /*+ leading(inv)*/ * from t_bd_material m left join t_im_inventorybalance inv on m.fid = inv.fmaterialid

where m.FMATERIALGROUPID = 'p4AAAAAAd2LHn8BC' AND inv.fcompanyorgunitid = 'p4AAAAASoejM567U'

由此可见,同一条查询语句会因为传入不同的条件使用不同的执行计划,以上语句如果使用绑定变量会导致第二条语句也尝试把inv表做为驱动表,执行计划会比较差


sql不建议绑定变量,使用硬解析的场景

问题描述:sql不建议绑定变量,使用硬解析的场景解决方案:绑定变量能解决数据库硬解析过多的问题,循环执行的sql建议使用绑定变更,能减少...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息