当前位置: 首页 > news >正文

浅谈Sql Server 临时表

一、基本介绍

临时表在SQL SERVER2005中存放在系统库tempdb库的临时表中。

  

当数据库工作在十分大的表上时,在实际操作中你可能会需要运行很多的相关查询,来获得一个大量数据的小的子集,不是对整个表运行这些查询。而是让MsSQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后对这些表运行查询。

  

创建MySQL临时表很容易,给正常的CREATE TABLE语句加上TEMPORARY关键字

Sql代码

CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL, value INTEGER NOT NULL )

二、应用范围

1、当某一个SQL语句关联的表在2张及以上,并且和一些小表关联。可以采用将大表进行分拆并且得到比较小的结果集合存放在临时表中。

2、程序执行过程中可能需要存放一些临时的数据,这些数据在整个程序的会话过程中都需要用的等等。

三、基本使用

SQL Server 提供了几种创建和使用临时表的方法

1、局部临时表:使用 # 符号标识,如 #TempTable。这种临时表只在当前会话中可见,并且当会话结束时自动删除。

CREATE TABLE #TempTable (Col1 INT,Col2 VARCHAR(50)
);INSERT INTO #TempTable (Col1, Col2)
VALUES (1, 'Value1'), (2, 'Value2');SELECT * FROM #TempTable;

2、全局临时表:使用 ## 符号标识,如 ##GlobalTempTable。这种临时表对所有会话都是可见的,但是它们只在当前数据库内有效,并且在不再被引用时自动删除。

CREATE TABLE ##GlobalTempTable (Col1 INT,Col2 VARCHAR(50)
);INSERT INTO ##GlobalTempTable (Col1, Col2)
VALUES (1, 'Value1'), (2, 'Value2');SELECT * FROM ##GlobalTempTable;

3、表变量:使用 @ 符号标识,如 @@TableVariable。表变量在使用上类似于临时表,但它们是定义为变量的,并且可以跨批处理使用。不过,它们不支持索引和某些系统函数。

DECLARE @TableVariable TABLE (Col1 INT,Col2 VARCHAR(50)
);INSERT INTO @TableVariable (Col1, Col2)
VALUES (1, 'Value1'), (2, 'Value2');SELECT * FROM @TableVariable;

4、CTE(公用表表达式):虽然不是临时表,但它们用于存储查询的中间结果,类似于临时表。CTE 定义在查询的开始,并且只对查询有效。

WITH CTE AS (SELECT Col1, Col2FROM SomeTable
)
SELECT * FROM CTE;

四、注意事项

使用临时表可以提高查询性能,尤其是在处理大量数据时。它们允许你存储中间结果集,避免重复计算,并且可以使查询逻辑更加清晰。不过,需要注意的是,过度使用临时表可能会导致不必要的资源消耗,尤其是在大型数据库中。因此,应当根据实际情况合理使用。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 执行docker compose命令出现 Additional property include is not allowed
  • 楼宇控制与智能家居实训室解决方案
  • linux系统编程:多任务编程(进程1)
  • 【Python快速入门和实践019】Python常用脚本-查看视频信息并压缩视频
  • C语言家教记录(六)
  • 【Qt】QWidget的toolTip属性
  • 函数递归那些事
  • MySQL基础练习题47-判断三角形
  • haproxy实验-2
  • Asciidoc 转化为 CSDN 帖子,完美数学公式
  • Ubuntu20.04 运行深蓝路径规划hw1
  • 微软披露Office最新零日漏洞,可能导致数据泄露
  • C语言相关
  • python从入门到精通:基础语法讲解
  • C++:std::pair的定义及用法
  • 2018一半小结一波
  • angular2 简述
  • CSS居中完全指南——构建CSS居中决策树
  • FastReport在线报表设计器工作原理
  • go append函数以及写入
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • js继承的实现方法
  • maya建模与骨骼动画快速实现人工鱼
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • Vue官网教程学习过程中值得记录的一些事情
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 我与Jetbrains的这些年
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​flutter 代码混淆
  • ​经​纬​恒​润​二​面​​三​七​互​娱​一​面​​元​象​二​面​
  • ​马来语翻译中文去哪比较好?
  • ​数据链路层——流量控制可靠传输机制 ​
  • #java学习笔记(面向对象)----(未完结)
  • #VERDI# 关于如何查看FSM状态机的方法
  • #数据结构 笔记三
  • (C#)获取字符编码的类
  • (LeetCode C++)盛最多水的容器
  • (二)什么是Vite——Vite 和 Webpack 区别(冷启动)
  • (二刷)代码随想录第16天|104.二叉树的最大深度 559.n叉树的最大深度● 111.二叉树的最小深度● 222.完全二叉树的节点个数
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (回溯) LeetCode 78. 子集
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转载)(官方)UE4--图像编程----着色器开发
  • .gitignore不生效的解决方案
  • .Net Core 中间件与过滤器
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net framework profiles /.net framework 配置
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net开发时的诡异问题,button的onclick事件无效
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .secret勒索病毒数据恢复|金蝶、用友、管家婆、OA、速达、ERP等软件数据库恢复