浅谈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, Col2
    FROM SomeTable
)
SELECT * FROM CTE;

四、注意事项

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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CN.LG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值