你的位置:首页 > 数据库

[数据库]关于临时表和表变量的差别2


又是想到什么写什么系列……上次 http://www.cnblogs.com/Gin-23333/p/5096638.html 写了一下,今天补充点其它的

1、在事务里面的影响,临时表可以被回滚 而表变量是不能回滚的。简单的例子

DECLARE @T AS TABLE(ID INT,Name NVARCHAR(50))IF OBJECT_ID('tempdb..#T') IS NOT NULL  DROP TABLE #TCREATE TABLE #T (ID INT,Name NVARCHAR(50))BEGIN TRAN  INSERT INTO @T      ( ID, Name )  VALUES ( 1,N'Col1' );  INSERT INTO #T      ( ID, Name )  VALUES ( 1,N'Col1' );ROLLBACKSELECT * FROM @TSELECT * FROM #T@TID     Name----------- --------------------------------------------------1      Col1#TID     Name----------- --------------------------------------------------

 

 

2、临时表定义好之后可以通过DDL语句修改结构,但是表变量就不行了

DECLARE @T AS TABLE(ID INT PRIMARY KEY,Name NVARCHAR(50))IF OBJECT_ID('tempdb..#T') IS NOT NULL  DROP TABLE #TCREATE TABLE #T (ID INT PRIMARY KEY,Name NVARCHAR(50))ALTER TABLE #T ADD Col1 nvarchar(50);SELECT * FROM #TALTER TABLE @T1 ADD Col1 nvarchar(50);SELECT * FROM @T

消息 102,级别 15,状态 1,第 16 行
“@T1”附近有语法错误。
消息 102,级别 15,状态 1,第 16 行
“Col1”附近有语法错误。


 

 

3、临时表可以定义外键,但是表变量是不行的(这里代码就不写了╮(╯_╰)╭,)

4、临时表可以创建索引,表变量是不行的,所以中间缓存结果会比较大的时候,可以适当使用临时表创建索引来进行优化。

5、表变量不维护统计数据。这意味着任何表变量数据更改都不会引起相关查询语句进行重编译

6、表变量可以引用用户自定义数据类型,临时表并不能,因为临时表引用的是tempdb,而里面并没有定义该用户自定义类型。

暂时想到这么多╮(╯_╰)╭,如果想到新的东西再分享

 




现在去瑞士旅游多少钱瑞士旅游几月份最好瑞士旅游怎么样几月去瑞士旅游最便宜深圳到加拿大旅游中国宁夏银川特色菜:清蒸羊羔肉 内蒙古4A级景区克什克腾世界地质公园 不可不吃的内蒙古特色美食 中国宁夏银川4A级景区华夏西部影视城 潍坊到富华游乐园公交路线?潍坊车站到富华游乐园交通指南? 富华游乐园有吃饭的地方吗?潍坊富华游乐园森林餐厅怎么样? 潍坊火车站到富华游乐园打车多少钱?潍坊火车站到富华游乐园坐几路公交直达? 杭州汽车站到浮盖山峡谷漂流坐车多长时间?杭州汽车站到浮盖山峡谷漂流怎么坐车? 香港挪亚方舟游玩攻略 挪亚方舟图文欣赏 麦里浩径路线图美图欣赏 香港麦里浩径徒步美景 香港长洲美景欣赏 香港长洲交通路线介绍 清明游香港南丫岛美图分享 2015香港南丫岛景点图片分享 元旦去马尔代夫旅游怎么样?会不会冷了? 迪拜十大疯狂建筑有哪些?哪些名气较大? 泰国线路哪个好,如何选择泰国旅游线路? 泰国什么化妆品便宜? L9949TR Datasheet L9949TR Datasheet STM1061N19WX6F Datasheet STM1061N19WX6F Datasheet L9950 Datasheet L9950 Datasheet 黑河出发港澳旅游 黑河出发港澳旅游 黑河出发港澳旅游 黑龙江出发 香港游 黑龙江出发 香港游 黑龙江出发 香港游 宿迁出发香港旅游 宿迁出发香港旅游 宿迁出发香港旅游