A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© parker 初级黑马   /  2013-5-21 15:10  /  1566 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问sql server数据库中临时表和表变量有什么区别?

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

3 个回复

倒序浏览
如 SQL Server 联机丛书“表”(Table) 一文中所述,表变量(如局部变量)具有明确定义的范围,在该范围结束时会自动清除这些表变量。
与临时表相比,表变量导致存储过程的重新编译更少。
涉及表变量的事务仅维持表变量上更新的持续时间。因此,使用表变量时,需要锁定和记录资源的情况更少。因为表变量具有有限的范围并且不是持久性数据库的一部分,所以事务回滚并不影响它们。
------------------------------------------------------------------------------------------------------------------------
网上给找的答案

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
区别如下:
(1)、表变量是存储在内存中的,当用户在访问变量的时候,SQL Server时不产生日志的,而在临时表中是产生日志的。
(2)、表变量是不允许有DEFAULT默认值的,也不允许有约束。
(3)、在表变量中是不允许有非聚集索引的。
(4)、临时表中是有锁的机制的,而表变量中就没有锁的机制。
(5)、临时表上的统计信息是健全而可靠的,但是表变量上的统计信息是不可靠的。

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
张成智 发表于 2013-5-21 17:50
区别如下:
(1)、表变量是存储在内存中的,当用户在访问变量的时候,SQL Server时不产生日志的,而在临时表 ...

说的不错!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马