小编Rya*_*vin的帖子

SQL性能降低(改进插入到临时表中)

我一直在研究运行缓慢的旧审核存储过程,通过应用索引并使查询更可查询,我取得了一些成功。

但是,存储过程仍需要一分钟以上才能完成。我认为问题出在临时表插入。我确实尝试将索引应用于临时表,但这只会降低性能,因为:

表上索引的数量是影响插入性能的最主要因素。表具有的索引越多,执行速度就越慢。插入语句是唯一不能直接从索引中受益的操作,因为它没有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)

sql sql-server performance stored-procedures temp-tables

8
推荐指数
1
解决办法
3万
查看次数