TSQL--临时表和表变量
时间:2022-04-25
本文章向大家介绍TSQL--临时表和表变量,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1. 临时表适用数据量较大的情况,因为临时表可以建立索引
2. 表变量适用于数据较小的情况,表变量只能在定义时创建约束(PRIMARY KEY/UNIQUE)从而间接建立索引
3. 临时表是事务性的,数据会随着事务回滚而回滚,表变量是非事务性的
4. 临时表和表变量都存放在内存中,当内存存在压力时才放入到硬盘
5. 临时表属于回话级别,除非显式DROP,否则会一直保持到回话结束
6. 表变量属于上下文级别,当前批处理结束后会被立即释放。
7. 临时表的创建删除会导致存储过程重编译,而在存储过程中使用表变量不会引发重编译
8. 用户定义的临时对象(临时表、全局临时表、表变量、游标)都优先存放到内存
9. 临时表和表变量在数据操作时产生的日志远远低于普通表
10.除非使用 DROP TABLE 显式删除临时表,否则临时表将在退出其作用域时由系统自动删除:
1)当存储过程完成时,将自动删除在存储过程中创建的本地临时表。由创建表的存储过程执行的所有嵌套存储过程都可以引用此表。但调用创建此表的存储过程的进程无法引用此表。
2)所有其他本地临时表在当前会话结束时都将被自动删除。
3)全局临时表在创建此表的会话结束且其他所有任务停止对其引用时将被自动删除。任务与表之间的关联只在单个 Transact-SQL语句的生存周期内保持。换言之,当创建全局临时表的会话结束时,最后一条引用此表的 Transact-SQL 语句完成后,将自动删除此表。
--==========================================================
--创建临时表
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
- [WCF权限控制]利用WCF自定义授权模式提供当前Principal[实例篇]
- [WCF权限控制]利用WCF自定义授权模式提供当前Principal[原理篇]
- [自定义服务器控件] 第一步:文本框。
- 检查两个数据库里的表名、字段是否一致的一种方法
- 如何在Python中从零开始实现随机森林
- 基类、接口的应用——表单控件:一次添加、修改一条记录,一次修改多条记录。(上)
- 使命必达: 深入剖析WCF的可靠会话[协议篇](下)
- 分页控件和几个相关控件的源代码
- Python编程中的反模式
- Python机器学习库:Scikit-Learn简介
- 很简单的企业管理器---我写程序的方式,几个自定义控件。
- 使命必达: 深入剖析WCF的可靠会话[原理揭秘篇](上)
- 其实添加数据也可以这样简单——表单的第三步抽象(针对UI及后置代码)
- 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- GO 匿名函数和闭包
- Nginx升级加固SSL/TLS协议信息泄露漏洞(CVE-2016-2183)和HTTP服务器的缺省banner漏洞
- GO中间件(Middleware )
- TomcatAJP文件包含漏洞及线上修复漏洞
- golang new和make的区别
- Magicodes.IE之导入导出筛选器
- 界面酷炫,功能强大!这款 Linux 性能实时监控工具超好用!老斯机搞它!
- httprunner学习28-yaml文件 参数化读取 csv 文件字符串转 int
- 30个编程小技巧,提高代码性能
- httprunner学习27-参数关联时在 yaml 文件 int 和 str 数据类型转换
- python笔记47-面试题:如何判断字典a在字典b
- Go操作腾讯云COS对象存储的简单使用案例
- Go channel 实现原理分析
- Web压测工具之Webbench和http_load
- 这 6 个 Spring Boot 项目够经典