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
复制代码

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • python中plot实现即时数据动态显示方法[通俗易懂]

    python中plot实现即时数据动态显示方法[通俗易懂]在Matlab使用Plot函数实现数据动态显示方法总结中介绍了两种实现即时数据动态显示的方法。考虑到使用python的人群日益增多,再加上本人最近想使用python动态显示即时的数据,网上方法很少,固总结于此。示例代码importmatplotlib.pyplotaspltimportnumpyasnpimporttimefrommathimport*plt.ion()

  • mysql判断表分区是否存在_mysql 分区表

    mysql判断表分区是否存在_mysql 分区表CREATETABLE`fs_orders_funds_detail_sp32`(`id`int(11)NOTNULLAUTO_INCREMENT,`confirm_time`datetimeNOTNULLDEFAULT’0000-00-0000:00:00′,`order_id`varchar(50)DEFAULTNULLCOMMENT’平台单号’,`updat…

  • linux vim复制粘贴命令_在Linux如何复制

    linux vim复制粘贴命令_在Linux如何复制将光标移动到复制的起始位置,按一下大写V或小写v,(大写V是整行,小写是光标处),然后上下左右将光标移动到复制的末尾,然后按下y,移动到要粘贴的位置,按下大写P或小写p(大写P:光标之前粘贴,小写p光标之后粘贴);总结:光标处起始处——按V/v——移动到复制的末尾处——按y——光标移到想粘贴的地方——按P/p;想要剪切的话,把y换成dd;…

  • gridlayout布局

    gridlayout布局浅谈android4.0开发之GridLayout布局分类: Android应用开发技巧2012-03-1123:51 3646人阅读 评论(1) 收藏 举报androidlayoutbuttonencoding框架编程作者:李响         本文重点讲述了自android4.0版本后新增的GridLayout网格布局的一些基本

  • ubuntu16.04分区方案设置(新装的ubuntu没有网络驱动)

    linux分区设置。法一:Swap(相当于电脑内存):逻辑分区、大小设置为电脑内存大小,2G,4G;/boot(引导分区):主分区:大小设置为200M;/home(用户存储数据用):逻辑分区,要尽可能大,100G空间可以设置为85G,留10G给主分区即可。/.(主分区):主分区,用于存放系统,相当于win7的C盘,10G即可。法二:/.(主分区):主分区,只分这一个区,…

  • 网络摄像头RTSP视频流WEB端实时播放实现方案[通俗易懂]

    网络摄像头RTSP视频流WEB端实时播放实现方案[通俗易懂]IPC视频流怎么实时在WEB浏览器播放,视频流格式是RTSP。下面我整理了自己实现的方案以及网上看到的一些方案一、FFmpeg+nginx将转hls通过video.js在支持h5浏览器播放(我实现的)参见:Nginx+FFmpeg实现rtsp流转hls流,在WEB通过H5video实现视频播放不足:hls延迟较rtmp、http-flv大二、FFmpeg+nginx-…

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

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