洞察探索如何通过一套代码实现跨平台小程序开发与高效管理,助力企业数字化转型
817
2022-12-02
SQL SERVER学习笔记:临时表与表变量
本文主要摘自徐海蔚的《Microsoft SQL SERVER企业级平台管理实践》
表变量可以作为存储过程的返回参数,而临时表不行。(存疑?表值参数只在SQL SERVER2008才开始支持,并且限制很多,要首先定义表类型)
use [test]gocreate type [user] as table(id int,name varchar(50));gocreate procedure test_prd@u [user] readonlyasbegin select * from @u;endgodeclare @u [user];insert into @u(id,name) values(1,'zhang3');exec test_prd @u;godrop procedure test_prd;godrop type [user];go
临时表跟普通的表一样,SQL SERVER会维护其统计信息,以得到合适的执行计划;也可以在上面建立索引。而表变量既不能建索引,也不会有统计信息;SQL SERVER在做执行计划的时候,总是认为表变量里的数据量只有很少的几行。
因此,表变量的好处是维护成本很低,大量并发使用时系统开销要比临时表低。但因为缺乏统计信息,只适合存放少量数据
而临时表功能和普通表接近,能够为大数据量做优化;缺点是维护成本比较高,大量并发使用时,系统负荷比较大。
use [test]goselect 1 as id,'li4' as name into #t;godeclare @t table(id int,name varchar(50));insert into @t(id,name) values(2,'wang8');gocreate procedure test_prdasbegin exec('select * from #t;select * from @t;');endgoexec test_prd;godrop procedure test_prd;godrop table #t;go
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~