如何解决绑定变量造成执行计划不准的问题?
2013-06-03 08:49
381 查看
我们一直都在强调用绑定变量,它可以减少SQL分析,节约共享池的空间。在我的上一篇blog中,讨论了绑定变量会使执行计划不准http://blog.csdn.net/guogang83/article/details/8175633 。
正如上一篇的所说的,如果第一次执行是走的索引,那以后一直都走索引;如果第一次不走索引,那以后一直都不走索引。使用了绑定变量后,优化器不是每次都能够准确的判断执行计划。如何才能使执行计划准呢?
1. 对于倾斜性的列,可以通过使用直方图来优化索引;
a. all predicates on the column use bind variables (每个列上的谓词都使用了绑定变量)。
b. the column data is uniformly distributed (数据均匀的分布)。
c. the column is not used in WHERE clauses of queries (条件没有加到where后面)。
d. the column is unique and is used only with equality predicates (列是独特的,使用时用了等号)。
2. 对于倾斜性的列,从查询性能考虑,不要使用绑定变量(如果列上有可用索引)。
正如上一篇的所说的,如果第一次执行是走的索引,那以后一直都走索引;如果第一次不走索引,那以后一直都不走索引。使用了绑定变量后,优化器不是每次都能够准确的判断执行计划。如何才能使执行计划准呢?
1. 对于倾斜性的列,可以通过使用直方图来优化索引;
a. all predicates on the column use bind variables (每个列上的谓词都使用了绑定变量)。
b. the column data is uniformly distributed (数据均匀的分布)。
c. the column is not used in WHERE clauses of queries (条件没有加到where后面)。
d. the column is unique and is used only with equality predicates (列是独特的,使用时用了等号)。
2. 对于倾斜性的列,从查询性能考虑,不要使用绑定变量(如果列上有可用索引)。
相关文章推荐
- 绑定变量窥探(bind peeking)--什么使执行计划不准
- 绑定变量窥探(bind peeking)--什么使执行计划不准
- 通过重新生成执行计划解决绑定变量执行计划偏差导致SQL执行时间过长
- Jquery前端之 事件绑定(二) 解决事件的删除,事件的无序执行的问题,有个小例子
- 如何解决在UBOOT中通过串口输入长度较大的环境变量的问题
- javascript异步执行函数导致的变量变化问题解决思路
- linux下如何解决jvm执行取得的时间和系统时间不一致的问题
- javascript中运用闭包和自执行函数解决大量的全局变量问题
- mysql order by 造成语句 执行计划中Using filesort,Using temporary相关语句的优化解决
- mssql中的like关于执行计划异常问题以及解决
- IE9 浏览器绑定大数据会造成Table列错位问题解决方案
- IQueryable<T>绑定到Repeater,执行Repeater_ItemDataBound事件时,遇到的问题及解决办法
- Java中如何解决double和float精度不准的问题
- 解决Spring定时计划任务重复执行两次(实例被构造两次)问题的方法
- 解决scott用户执行计划看不到统计信息的问题
- 在SQL 2008中总是出现问题:执行Transact-SQL语句或批处理时发生异常。如何解决?
- 解决html按钮切换绑定不同函数后点击时执行多次函数问题
- 如果dom节点是动态添加进页面的,在页面节点绑定事件如何解决的问题。
- 解决 执行计划看不到过滤条件 出现'PLAN_TABLE' is old version的问题