SQL Server 临时表是存储在 tempdb 数据库中的临时对象,主要用于会话期间存储中间数据。以下是其主要用法分类及特点:
一、临时表类型
-
本地临时表
- 命名以单井号
#开头(如#TempTable) - 仅对当前会话可见,会话结束后自动删除
- 示例:
CREATE TABLE #Employee (ID INT, Name NVARCHAR(50)); INSERT INTO #Employee VALUES (1, 'Alice');
- 命名以单井号
-
全局临时表
- 命名以双井号
##开头(如##GlobalTemp) - 对所有会话可见,当最后一个引用它的会话结束时自动删除
- 示例:
CREATE TABLE ##Log (LogID INT, Message NVARCHAR(100));
- 命名以双井号
二、创建方式
- 显式定义结构
CREATE TABLE #Temp (Col1 INT, Col2 VARCHAR(50)); - 通过查询结果创建
此方式自动继承查询结果的字段结构和数据。SELECT * INTO #Temp FROM Employees WHERE Salary > 5000;
三、常用操作
- 插入数据:与普通表相同,使用
INSERT INTO。 - 查询数据:直接使用
SELECT语句。 - 删除临时表:
若不手动删除,本地临时表会在会话关闭时自动删除。DROP TABLE #Temp; -- 显式删除(可选)
四、应用场景
- 复杂查询中间结果:拆分多表关联查询,提升性能。
- 存储过程或批处理:临时存储中间计算结果。
- 跨会话共享数据(全局临时表)。
五、注意事项
- 存在性检查:创建前建议检查临时表是否存在,避免重复创建错误:
IF OBJECT_ID('tempdb..#Temp') IS NOT NULL DROP TABLE #Temp; - 性能优化:临时表支持索引,适合大数据量处理,但需注意 tempdb 的 I/O 负载。
- 与表变量对比:临时表支持事务回滚和统计信息,表变量则更轻量但功能受限。
临时表是 SQL Server 中处理临时数据的灵活工具,合理使用可显著提升查询效率和代码可维护性
1097

被折叠的 条评论
为什么被折叠?



