C军

不玩博客了!

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

随笔分类 -  SQLServer:存储过程重编译

存储过程重编译
摘要:为了改进性能,分析重编译的起因很重要。往往,重编译可能并不需要,可以避免它以改进性能。了解导致重编译发生的不同条件有助于评估重编译的起因,并决定在重编译不必要时避免它的方法。 存储过程重编译在以下情况下发生:存储过程语句中引用的常规表、临时表或视图的架构变化。架构变化包括表的元数据或表上索引的变化;常规或临时表的列上的绑定(如默认/规则)变化。表索引或列上的统计的变化超过一定的阈值。存储过程编译时一个对象不存在,但是在执行期间创建(延迟对象解析);SET选项变化;执行计划老化并释放;对sp_recompile系统存储过程的显式调用。显式使用RECOMPILE子句; 可以在Profile... 阅读全文
posted @ 2013-11-19 16:40 逆心 阅读(5206) 评论(1) 推荐(4) 编辑

摘要:存储过程通过明确地将查询的可变部分转换为参数来增进执行计划的可重用性。这使执行计划在查询以可变部分的相同或不同值重新提交时可以被重用。存储过程包含一组复杂的SQL语句,使生成存储过程的执行计划的代价有些高。因此,通常重用存储过程的执行计划来代替生成新计划是有利的。但是,有时候现有的计划可能不适用或者在重用期间可能不能提供最佳的处理策略。SQL Server重编译存储过程中的语句来生成一个新的执行计划,以解决这个问题。一、重编译的好处 存储过程的重编译既有好处又有缺点,有时候,为查询考虑一个新的处理策略而不是重用现有计划可能更经济。特别是表(或对应的统计)中数据的分布变化或者表中添加了新的... 阅读全文
posted @ 2013-11-19 15:35 逆心 阅读(3121) 评论(0) 推荐(0) 编辑