让存储过程中的查询语句按照不同查询条件进行优化(即每次查询都使用参数option(recompile))
2011-02-26 13:10
851 查看
ASP.NET调用SQL后台存储过程时,有时突然就变得很慢,在后台直接执行存储过程没问题,但在前台调用存储过程时就是很慢,而且在前台调用成功后,再次调用还是一样的慢,但更新一下存储过程再调用就很快了。但这始终不能彻底解决问题,过段时间又会出来同样的问题。环境(NET2.0+SQL2005)
解决办法:
简单方法一:在可能比较耗时的语句后面加上option(recompile)
方法二:新编译存储过程
在用诸如添加索引或更改索引列中的数据等操作更改数据库时,应通过重新编译访问数据库表的原始查询计划使其得到重新优化。在重新启动 Microsoft® SQL Server™ 2000 后第一次运行存储过程时自动发生该优化。当存储过程使用的基础表更改时也会发生优化。但是如果添加了存储过程可能从中受益的新索引,将不发生自动优化,直到下一次 SQL Server 重新启动后再运行该存储过程时为止。
SQL Server 提供三种重新编译存储过程的方法:
sp_recompile 系统存储过程强制在下次运行存储过程时进行重新编译。
创建存储过程时在其定义中指定 WITH RECOMPILE 选项,表明 SQL Server 将不对该存储过程计划进行高速缓存;该存储过程将在每次执行时都重新编译。当存储过程的参数值在各次执行间都有较大差异,导致每次均需创建不同的执行计划时,可使用 WITH RECOMPILE 选项。此选项并不常用,因为每次执行存储过程时都必须对其进行重新编译,这样会使存储过程的执行变慢。
在执行存储过程时指定 WITH RECOMPILE 选项,可强制对存储过程进行重新编译。仅当所提供的参数不典型,或者自创建该存储过程后数据发生显著更改时才应使用此选项。
说明 如果删除或重命名了存储过程所引用的对象,那么在执行该存储过程时会返回错误。但如果用同名对象替换了存储过程中引用的对象,则可以不进行重新编译而继续执行该存储过
解决办法:
简单方法一:在可能比较耗时的语句后面加上option(recompile)
方法二:新编译存储过程
在用诸如添加索引或更改索引列中的数据等操作更改数据库时,应通过重新编译访问数据库表的原始查询计划使其得到重新优化。在重新启动 Microsoft® SQL Server™ 2000 后第一次运行存储过程时自动发生该优化。当存储过程使用的基础表更改时也会发生优化。但是如果添加了存储过程可能从中受益的新索引,将不发生自动优化,直到下一次 SQL Server 重新启动后再运行该存储过程时为止。
SQL Server 提供三种重新编译存储过程的方法:
sp_recompile 系统存储过程强制在下次运行存储过程时进行重新编译。
创建存储过程时在其定义中指定 WITH RECOMPILE 选项,表明 SQL Server 将不对该存储过程计划进行高速缓存;该存储过程将在每次执行时都重新编译。当存储过程的参数值在各次执行间都有较大差异,导致每次均需创建不同的执行计划时,可使用 WITH RECOMPILE 选项。此选项并不常用,因为每次执行存储过程时都必须对其进行重新编译,这样会使存储过程的执行变慢。
在执行存储过程时指定 WITH RECOMPILE 选项,可强制对存储过程进行重新编译。仅当所提供的参数不典型,或者自创建该存储过程后数据发生显著更改时才应使用此选项。
说明 如果删除或重命名了存储过程所引用的对象,那么在执行该存储过程时会返回错误。但如果用同名对象替换了存储过程中引用的对象,则可以不进行重新编译而继续执行该存储过
相关文章推荐
- oracle的存储过程中使用变量或参数进行模糊查询(like的变量绑定)
- 存储过程中sql语句按变量进行判断执行相应的查询条件
- 关于存储过程中一个参数表示多个查询条件使用方法的简单处理
- 使用HQL语句的按照参数名字查询数据库信息的时候 “=:”和参数之间不能存在空格,否则会报错
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- 存储过程中特殊符号的处理-sql语句当参数的存储过程-复杂查询
- SQL2000系统表、存储过程、函数的功能介绍及应用2009年01月21日 星期三 11:38虽然使用系统存储过程、系统函数与信息架构视图已经可以为我们提供了相当丰富的元数据信息,但是对于某些特殊的元数据信息,我们仍然需要直接对系统表进行查询。因为SQL
- 分页存储过程,可将查询条件作为参数传递的分页查询存储过程
- SqlServer 多条件查询 [存储过程] 经典例子结合C#的使用
- 使用MyBatis对项目中的统计功能进行处理的查询语句优化
- 分页存储过程,可将查询条件作为参数传递的分页查询存储过程
- 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
- 两种使用nuzt接收动态参数编写SQL语句进行分页查询
- SQL存储过程事务和优化方法(包括查询方式语句结合)
- 使用准则进行条件查询--1.3.运行查询前输入参数
- 关于JDBC使用命名参数(named parameters)进行存储过程调用的问题
- Sql Server 编写多条件查询语句的存储过程--包含语法错误的存储过程与正确存储过程
- EF中使用语句 或存储过程 查询(转)
- 存储过程中对输出参数拼sql语句查询
- SQL存储过程事务和优化方法(包括查询方式语句结合)