sql-server – SQL Server:为什么需要重新编译存储过程?
我正在执行我在
this site上找到的脚本来标记我的所有表和存储过程以进行重新编译.
(我将其更改为也标记存储过程) 我有一个Windows Forms(.net 3.5)应用程序,它使用了大量数据表,在执行此脚本后,打开数据繁重表单所花费的时间从8秒变为仅4秒. 我必须定期运行这样的脚本吗?我以为SQL Server会负责编译程序等. 顺便说一句:这个问题应该是吗?我以为DBA会在SF上. 解决方法从 Microsoft开始:“由于通过添加索引或更改索引列中的数据等操作更改了数据库,因此应通过重新编译来再次优化用于访问其表的原始查询计划.此优化在Microsoft之后第一次运行存储过程时自动执行SQL Server重新启动.如果存储过程使用的基础表发生更改,也会发生这种情况.但是如果添加了一个新索引,存储过程可能会从中受益,则优化不会发生,直到下次在Microsoft SQL之后运行存储过程服务器重新启动.在这种情况下,强制存储过程在下次执行时重新编译会很有用 强制存储过程重新编译的另一个原因是在必要时抵消存储过程编译的“参数嗅探”行为.当SQL Server执行存储过程时,过程在编译时使用的任何参数值都包含在生成查询计划的过程中.如果这些值表示随后调用过程的典型值,则每次编译和执行时,存储过程都会从查询计划中受益.如果没有,表现可能会受到影响.“ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQLserver 获取数据表新插入记录ID方法---SCOPE_IDENTITY与
- SQLserver狂占CPU解决方案
- mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分
- sql-server – 如何在SQL Server 2005中识别一个空白的唯一
- mssqlserver分页2种方法,很多人都选择了最差的一种
- sql-server – 在MS SQL Server 2005中编辑同义词
- Nutz框架学习之一连接sqlserver数据库进行登录操作
- sql – 如何连接没有日志文件的MDF?
- sql-server-2008 – 选择,修改并插入同一个表
- SQL Server sql 常用技巧整理
- 报告服务 – 如何在SQL Server Reporting Servic
- sqlserver backup use jobs and clear history b
- 将Null值参数传递给动态SQL查询.如何成功执行?
- sql – 如何从union语句中删除重复的行
- T-SQL – 左外连接 – where子句与on子句中的过滤
- SQL Server 2008 R2. “AUTO_INCREMENT”附近的语
- python连接mysql并提交mysql事务示例
- 使用ssh向sqlserver2005数据库中保存image类型的
- Redis整合Spring结合使用缓存实例
- mysql不能启动报error2013错误的多种解决方案