日期:2014-05-16  浏览次数:20715 次

关于存储过程内存占用的疑问
本帖最后由 top8843 于 2014-03-20 19:05:27 编辑
我要在存储过程拼接SQL语句,由于无法预见最终拼接出的SQL语句的长度,所以在声明变量时,我尽可能将其长度设置长点,比如:
declare @sql nvarchar(1000)

但这样,就会占用更多的内存,我想请问,存储过程执行后,变量所占用的内存会即使释放吗?
------解决方案--------------------
存储过程执行后,所使用的内存肯定是会释放的。

当然,如果你在存储过程中使用了游标,那么也必须要显示的释放游标占用的内存。

另外,存储过程的执行计划,是会缓存到内存中的,从而实现编译一次,运行多次
------解决方案--------------------
如果你无法预估长度,变长反而是很好的选择,既然长度会变,那么也不存在内存占用问题,nvarchar才1000你就担心的话一些大系统就惨了