我继承了一个相当复杂的存储过程,它导致我们的生产环境超时。我使用 SQL Sentry Plan Explorer 来帮助我查看一些问题。我已经确定了一些,但我很难想出可以进行的优化。我们正在使用 SQL Server 2019 和COMPATIBILITY_VERSION = 150
.
该存储过程通过 API 调用将数据返回到 Web 客户端,因此页面加载的性能非常重要。通过多个应用程序分析会话,此存储过程已被确定为瓶颈。
以下是已发现的一些问题:
tempdb
溢出数据警告INSERT INTO @ValidRows....
但我不知道如何识别它们。所涉及的表上有索引,从我看来它们似乎足够了。但是,我看到许多索引扫描在计划中被称为问题区域(黄色突出显示)
以下是实际执行计划的链接:https://www.brentozar.com/pastetheplan/ ?id=S1TN4NOS9
CREATE VIEW [dbo].[DailyNotePublishedContentView]
WITH SCHEMABINDING
AS
SELECT
T.Id AS DailyNoteContentId,
T.DateModified,
T.ModifiedBy,
T.Region,
T.DateAdded,
T.CreatedBy,
V.Id AS VersionId,
V.DateAdded AS VersionDateAdded,
V.CreatedBy as VersionCreatedBy,
V.ContentType,
V.DateDue,
V.IsPrivate,
V.ProjectId,
V.PublishDate,
V.AuthorTeamId, …
Run Code Online (Sandbox Code Playgroud)