SQL Server中的临时表分为两种类型:本地临时表(以单个#
开头)和全局临时表(以双##
开头)。临时表变量(如@table_variable
)则是一种在内存中存储数据的特殊类型,它们在会话范围内存在,并且不会像物理表那样产生磁盘I/O。
临时表和临时表变量常用于以下场景:
SQL Server 2017插入到临时表变量的速度非常慢,可能是由于以下原因:
-- 创建临时表变量
DECLARE @table_variable TABLE (
ID INT PRIMARY KEY,
Name NVARCHAR(100)
);
-- 分批插入数据
DECLARE @BatchSize INT = 1000;
DECLARE @Offset INT = 0;
WHILE (1=1)
BEGIN
INSERT INTO @table_variable (ID, Name)
SELECT TOP (@BatchSize) ID, Name
FROM SourceTable
WHERE ID > @Offset
ORDER BY ID;
SET @Offset = SCOPE_IDENTITY();
IF @@ROWCOUNT < @BatchSize BREAK;
END
通过以上方法,可以有效解决SQL Server 2017插入到临时表变量速度慢的问题。
领取专属 10元无门槛券
手把手带您无忧上云