我有一个 SQL 存储过程,其中一个语句需要 95% 的总时间(10 分钟)才能完成。#Records
大约有 133,000 行和Records
大约 12,000 行。
-- Check Category 1 first
UPDATE #Records
SET Id = (SELECT TOP 1 Id FROM Records WHERE Cat1=#Records.Cat1)
WHERE Cat1 IS NOT NULL
我尝试Cat1
在 in 中添加索引#Records
,但语句时间没有改善。
CREATE CLUSTERED INDEX IDX_C_Records_Cat1 ON #Records(Cat1)
随后的类似语句只需要一小部分时间
-- Check Category 2
UPDATE #Records
SET Id = (SELECT TOP 1 Id FROM Records WHERE Cat2=#Records.Cat2)
WHERE ID IS NULL
关于为什么会发生这种情况或我可以做些什么来使这个陈述更有效的任何想法?
提前致谢。
我在 Microsoft SQL Server 2005 上运行它。