我一直在研究运行缓慢的旧审核存储过程,通过应用索引并使查询更可查询,我取得了一些成功。
但是,存储过程仍需要一分钟以上才能完成。我认为问题出在临时表插入。我确实尝试将索引应用于临时表,但这只会降低性能,因为:
表上索引的数量是影响插入性能的最主要因素。表具有的索引越多,执行速度就越慢。插入语句是唯一不能直接从索引中受益的操作,因为它没有where子句。
SQL代码
我在审核过程中花费了最长的时间并包含了执行计划的审核过程的代码摘要发布在了下面。
SELECT dbo.[Audit Result Entry Detail].PK_ID,
dbo.[Audit Result Entry Detail].......
45-50 other columns selected from Audit Result Entry Detail
(Note i need to select all these)
dbo.[Audit Register].Audit_Date,
dbo.[Audit Register].Audit_Type,
dbo.[Audit Register].ContextUser
INTO #temp5
FROM dbo.[Audit Result Entry Detail]
INNER
JOIN dbo.[Audit Register]
ON dbo.[Audit Result Entry Detail].FK_RegisterID = dbo.[Audit Register].PK_ID
INNER
JOIN (
SELECT MAX(Audit_Date) AS DATE,
FK_RegisterID
FROM dbo.[Audit Result Entry Detail]
INNER
JOIN dbo.[Audit Register]
ON dbo.[Audit Result Entry Detail].FK_RegisterID = dbo.[Audit Register].PK_ID …Run Code Online (Sandbox Code Playgroud)