48、SQL Server中存储过程的执行计划管理与优化

SQL Server中存储过程的执行计划管理与优化

1. 多语句表值函数与临时表的使用注意

多语句表值函数(multistatement TVFs)返回的是表变量。与临时表不同,SQL Server 不会为表变量维护直方图。这导致在优化器对表变量进行基数估计时,可用的工具受限,可能会做出次优选择,无论是函数体内针对表变量的查询,还是针对表函数的外部查询。若发现性能问题与缺乏直方图有关,就需要重新评估解决方案。

另一个选择是使用带有临时表的存储过程。不过,与查询表函数的结果相比,与存储过程的结果进行交互不太方便。需要明确优先级并进行测试,以确定是否存在性能差异以及差异的大小。

2. 存储过程的优势

存储过程是一种重要的编程工具,与即席代码相比,具有以下好处:
- 可重用性与复杂性隐藏 :将逻辑封装在例程中,便于重用并隐藏复杂性。
- 部署简便 :部署存储过程的更改比部署应用程序的更改简单得多。只需使用 ALTER PROC 命令,所有人就能立即使用更改后的版本。
- 减少网络流量 :通过网络仅传递过程名称和输入参数,逻辑在数据库引擎中执行,仅将最终结果传输回调用方,减少了应用程序与数据库之间的往返次数。
- 促进计划缓存和重用 :存储过程中使用参数化查询有助于高效的计划缓存和重用。不过,使用 sp_executesql 执行参数化查询也能获得类似的好处。

3. 执行计划的编译、重新编译和重

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值