我正在尝试编写一个存储过程,该过程将在我们的客户尝试升级之前检查孤立数据,因为孤立记录可能会导致问题。这是我迄今为止所拥有的;
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'DetectOrphanDataBeforeUpgrade')
DROP PROCEDURE [dbo].[DetectOrphanDataBeforeUpgrade]
GO
CREATE PROCEDURE [dbo].[DetectOrphanDataBeforeUpgrade]
@TenantId INT = NULL
AS
BEGIN
DECLARE @OrphanAuditItems NVARCHAR(MAX)
DECLARE @OrphanAuditAnswers NVARCHAR(MAX)
DECLARE @OrphanAuditQuestion NVARCHAR(MAX)
------------------------------------------------------------------------------------------------
/* Throw an error if the TenantId is NULL or Invalid. */
------------------------------------------------------------------------------------------------
IF @TenantId IS NULL OR @TenantId NOT IN (SELECT Tenants FROM [Application].[dbo].[TenantIdNumber])
BEGIN
THROW 51000, '@TenantId is invalid because it is NULL or does not exist.', 1;
END
------------------------------------------------------------------------------------------------ …Run Code Online (Sandbox Code Playgroud) 我们的数据库正在接收以下请求:
select * from [schema].[table] (nolock) where (Date_A > Date_B and Archive = 0)
Run Code Online (Sandbox Code Playgroud)
这是我们的应用程序发出的正常请求。平均而言,完成请求需要 200 毫秒 - 400 毫秒,CPU 大约需要 100 毫秒 - 150 毫秒。读取通常在 48k 左右。这至少是该脚本如何执行的一个示例。
加速此类请求的最佳方法是什么(如果有办法)?
该表有 240,932 行,查询返回 0 条记录。