gpt4 book ai didi

sql-server-2005 - SQL Server,带有截断的临时表与带有删除的表变量

转载 作者:行者123 更新时间:2023-12-04 09:38:04 24 4
gpt4 key购买 nike

我有一个存储过程,在其中创建了一个通常包含 1 到 10 行的临时表。该表在存储过程中被多次截断和填充。它被截断,因为这比删除快。
当我因使用删除而受到惩罚时,我是否通过用表变量替换这个临时表来获得任何性能提升(截断不适用于表变量)

虽然表变量主要在内存中并且通常比临时表快,但我是否因必须删除而不是截断而失去任何好处?

最佳答案

对脚本运行以下命令,似乎表变量是更好的选择

CREATE TABLE #Temp(
ID INT
)

DECLARE @Int INT,
@InnerInt INT
SELECT @Int = 1,
@InnerInt = 1

WHILE @Int < 50000
BEGIN
WHILE @InnerInt < 10
BEGIN
INSERT INTO #Temp SELECT @InnerInt
SET @InnerInt = @InnerInt + 1
END
SELECT @Int = @Int + 1,
@InnerInt = 1
TRUNCATE TABLE #Temp
END

DROP TABLE #TEMP

GO

DECLARE @Temp TABLE(
ID INT
)

DECLARE @Int INT,
@InnerInt INT
SELECT @Int = 1,
@InnerInt = 1

WHILE @Int < 50000
BEGIN
WHILE @InnerInt < 10
BEGIN
INSERT INTO @Temp SELECT @InnerInt
SET @InnerInt = @InnerInt + 1
END
SELECT @Int = @Int + 1,
@InnerInt = 1
DELETE FROM @Temp
END
来自 Sql Profiler
CPU     Reads   Writes  Duration
36375 2799937 0 39319

vs

CPU Reads Writes Duration
14750 1700031 2 17376

关于sql-server-2005 - SQL Server,带有截断的临时表与带有删除的表变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646695/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com