TSQL–临时表和表变量

TSQL–临时表和表变量

 

1. 临时表适用数据量较大的情况,因为临时表可以建立索引

2. 表变量适用于数据较小的情况,表变量只能在定义时创建约束(PRIMARY KEY/UNIQUE)从而间接建立索引

3. 临时表是事务性的,数据会随着事务回滚而回滚,表变量是非事务性的

4. 临时表和表变量都存放在内存中,当内存存在压力时才放入到硬盘

5. 临时表属于回话级别,除非显式DROP,否则会一直保持到回话结束

6. 表变量属于上下文级别,当前批处理结束后会被立即释放。

7. 临时表的创建删除会导致存储过程重编译,而在存储过程中使用表变量不会引发重编译

8. 用户定义的临时对象(临时表、全局临时表、表变量、游标)都优先存放到内存

9. 临时表和表变量在数据操作时产生的日志远远低于普通表

10.除非使用 DROP TABLE 显式删除临时表,否则临时表将在退出其作用域时由系统自动删除:   

  1)当存储过程完成时,将自动删除在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。    

 2)所有其他本地临时表在当前会话结束时都将被自动删除。    

 3)全局临时表在创建此表的会话结束且其他所有任务停止对其引用时将被自动删除。任务与表之间的关联只在单个 Transact-SQL语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL 语句完成后,将自动删除此表。

 

<span>TSQL--临时表和表变量</span>
<span>TSQL--临时表和表变量</span>

复制代码
--========================================================== --创建临时表 CREATE TABLE #T4 ( [ID] [int] NOT NULL, [STEP] [nvarchar](200) NULL, [DT] [datetime] NULL ) --========================================================== --创建临时表 DECLARE @T4 TABLE ( [ID] [int] NOT NULL, [STEP] [nvarchar](200) NULL, [DT] [datetime] NULL ) ​ --========================================================== --创建用户定义表类型,使用表类型定义变量 CREATE TYPE dbo.myTB AS TABLE ( [ID] [int] NOT NULL, [STEP] [nvarchar](200) NULL, [DT] [datetime] NULL ) DECLARE @T4 dbo.myTB
复制代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119725.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号