问题描述:开发环境的数据库版本是10g,开发组的兄弟反馈有点系统的一个查询统计功能,页面基本出不来,用debug调试是SQL执行耗时,但SQL打印出来后在pl/sql中执行非常快。
如何分析:初判断是绑定变量引起,于是查了查询条件的直方图,发现有两个条件值分布不均匀,当即确认是绑定变量引起。绑定变量优点避免硬解析,缺点是默认绑定列的数据是分布均匀的,当遇到分布不均匀的列很可能走错计划。
如何解决:要开发组的同事对这两列不适用绑定变量,问题解决。
如何预防:公司的系统是OLTP和OLAP的混合体,对大查询和统计在开发阶段,根据查询字段数据增长量和数据分布是否均匀来判断是否使用绑定变量。
如何分析:初判断是绑定变量引起,于是查了查询条件的直方图,发现有两个条件值分布不均匀,当即确认是绑定变量引起。绑定变量优点避免硬解析,缺点是默认绑定列的数据是分布均匀的,当遇到分布不均匀的列很可能走错计划。
如何解决:要开发组的同事对这两列不适用绑定变量,问题解决。
如何预防:公司的系统是OLTP和OLAP的混合体,对大查询和统计在开发阶段,根据查询字段数据增长量和数据分布是否均匀来判断是否使用绑定变量。