我继承了一个相当复杂的存储过程,它导致我们的生产环境超时。我使用 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)