邹建老大,有一问题请教

wofan 2004-07-29 08:02:39
我想问一下存储过程与SQL语句在执行效率上有什么不同

为什么存储过程会比SQL语句操作起来快

我想知道得深入一点

谢谢
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
happydreamer 2004-07-29
  • 打赏
  • 举报
回复
引起存储过程重新编译的因素

删除或者重建过程
在过程里使用with recomplie语句,或者在执行时使用
使用sp_recomlile 使存储过程在下次运行时重新编译
恢复数据库时
或者存储过程计划从高速缓存中移出
如果过程引用表的有足够的数据发生变化
如果用户在DDL语句中插入DML语句
SET CONCAT_NULL_YIELDS_NULL
zjcxc 元老 2004-07-29
  • 打赏
  • 举报
回复
就是1楼说的,其他的相关信息楼主可以看联机帮助
zjcxc 元老 2004-07-29
  • 打赏
  • 举报
回复
存储过程和执行计划
在 SQL Server 6.5 版及更早的版本中,存储过程是对执行计划进行部分预编译的方法。在创建存储过程的同时,系统表内也存储了一个部分编译好的执行计划。执行存储过程比执行 SQL 语句更有效,因为 SQL Server 不必从头到尾编译执行计划,而只须优化该过程所存储的计划。同时,在 SQL Server 过程高速缓存中保留了完全编译好的存储过程执行计划,这意味着后面执行的存储过程可以使用预先编译好的执行计划。

SQL Server 2000 和 SQL Server 7.0 版在语句处理上做了许多修改,将存储过程的许多性能优点扩展到所有 SQL 语句。SQL Server 2000 和 SQL Server 7.0 在创建存储过程时不保存部分编译的计划。与任何其它的 Transact-SQL 语句一样,存储过程也在执行时进行编译。SQL Server 2000 和 SQL Server 7.0 在过程高速缓存内保留所有 SQL 语句的执行计划,而不只是存储过程的执行计划。数据库引擎使用一种高效的算法,将新的 Transact-SQL 语句与现有执行计划的 Transact-SQL 语句进行比较。如果数据库引擎确定新的 Transact-SQL 语句与现有执行计划的 Transact-SQL 语句相匹配,就重新使用这个计划。这样就将执行计划的重复使用性扩展到了所有 SQL 语句,从而减少了预编译存储过程的相对性能优势。

SQL Server 2000 和 SQL Server 7.0 版提供了新的处理 SQL 语句的可选方法。有关更多信息,请参见查询处理器构架。

wofan 2004-07-29
  • 打赏
  • 举报
回复
谁知道呀,偶想弄清楚

谢谢
zheninchangjiang 2004-07-29
  • 打赏
  • 举报
回复
详细我就不会了,总之编译比解释快
wofan 2004-07-29
  • 打赏
  • 举报
回复
能不能详细解释一下
zheninchangjiang 2004-07-29
  • 打赏
  • 举报
回复
预编译 效率你也知道,快

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧