TSQL–临时表和表变量
2023-03-20 14:53:50 时间
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
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/119725.html原文链接:https://javaforall.cn
相关文章
- 从本体论开始说起——运营商关系图谱的构建及应用
- 如何成为一名数据科学家?
- 从未见过的堂兄杀了人,你的DNA是关键证据
- 20个安全可靠的免费数据源,各领域数据任你挑
- 20个安全可靠的免费数据源,各领域数据任你挑
- 阿里云李飞飞:All in Cloud时代,云原生数据库优势明显
- 基于Hadoop生态系统的一高性能数据存储格式CarbonData(性能篇)
- 大数据告诉你:10年漫威,到底有多少角色
- TigerGraph:实时图数据库助力金融风控升级
- Splunk利用Splunk Connected Experiences和Splunk Business Flow 扩大数据访问
- 大数据开发常见的9种数据分析手段
- 以免在景区看人,我爬了5W条全国景点门票数据...
- 【实战解析】基于HBase的大数据存储在京东的应用场景
- 数据科学家告诉你哪些计算机科学书籍是你应该看的
- Kafka作为大数据的核心技术,你了解多少?
- Spring Boot 整合 Redis 实现缓存操作
- 大数据学习必须掌握的五大核心技术有哪些?
- 基于Antlr在Apache Flink中实现监控规则DSL化的探索实践
- 甲骨文再次被Gartner评为分析型数据管理解决方案魔力象限领导者
- 爬取吴亦凡微博102118条转发数据,扒一扒流量的真假