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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • MySQL官网下载教程

    MySQL官网下载教程在百度搜索输入:MySQL,然后选择官方网站,点击进入进入MySQL官网之后,首先点击:DOWNLOADS,待页面刷新之后,再点击:Community,点击:MySQLCommunityServer,最后点击Archivedversions,选择历史版本选择MySQLInstaller选择需要下载的版本最后点击Download进行下载…

    2022年5月3日
    47
  • 新编原创-Hcash(hsr)矿工指南,含出矿算法分析、各种显卡算力分析和收益计算模型

    新编原创-Hcash(hsr)矿工指南,含出矿算法分析、各种显卡算力分析和收益计算模型Hcash超级现金于2017-9-13日正式开始切换到POW/POS挖矿模式,本文旨在修正和完善前篇【深度分析-从源代码看Hcash(超级现金)的矿业指南和矿工规划,含挖矿收益预估】中的分析,针对HSR矿工进行详尽的指导和收益模型分析。

    2022年5月2日
    71
  • StringUtils.isBlank_StringBuilder

    StringUtils.isBlank_StringBuilderStringUtils.isNotBlank()

    2022年8月12日
    8
  • bioenergized_omni info panel

    bioenergized_omni info panelbzeromemset bcopy、bzero和bcmp是传统BSD的函数,属于POSIX标准;mem*是C90(以及C99)标准的C函数。区别在于,如果你打算把程序弄到一个符合C90/C99,但是不符合POSIX标准的平台时,后者比较有优势。NetBSD的代码中有很多地方使用mem*(他们更偏爱mem*,以利于移植),即使内核也是如此,而…

    2022年8月31日
    3
  • NetCMS使用BUG记录及解决方法

    NetCMS使用BUG记录及解决方法NetCMS1.7版本使用存在两个BUG1.在上传文件时如果勾选“如果文件存在则重命名(格式:月日时5位随机数-原文件),否则将覆盖原文件.”上传的文件路径将错误。  BUG所在,NetCMS.Content.Common.UpLoad类的120行,postedFile.SaveAs(SavePath+@""+_tmps); 恩,找到了,错误就在这里。  找到了错误所在,那解决…

    2022年9月30日
    2
  • CISCO mds FC光纤交换机配置参考资料

    CISCO mds FC光纤交换机配置参考资料(一)有几个概念必须明确一下(与brocade不同的地方):(1)brocade直接划分zone.而mds要在vsan下划分zone,mds可以先划分几个vsan,每个vsan包括几个zone.(2)brocase默认的端口是打开的,而mds默认的端口是关闭的(3)mds有一个默认的zone:”TheDefaultZo…

    2022年5月11日
    54

发表回复

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

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