相关疑难解决方法(0)

我是否应该避免向具有高吞吐量的表添加聚集键

我们有一个 SQL Server 解决方案,它有一个表dsStaging.Audit,用于存储由第三方事务数据库创建的审计记录。我们使用这些审计将来自第三方系统的 CRUD 操作同步到我们的 SQL 数据库中。

CREATE TABLE [dsStaging].[Audit](
    [SyncExecutionId] [bigint] NOT NULL,
    [AuditDataGuid] [nvarchar](56) NOT NULL,
    [AuditDate] [datetime] NOT NULL,
    [AuditDateTimeZone] [datetimeoffset](3) NULL,
    [AuditEventGroup] [nvarchar](56) NOT NULL,
    [TransactionId] [bigint] NOT NULL,
    [TransactionSequence] [int] NOT NULL,
    .
    ...
    .
 CONSTRAINT [PK_Audit] PRIMARY KEY CLUSTERED 
(
    [SyncExecutionId] ASC,
    [TransactionId] ASC,
    [TransactionSequence] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
    IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
Run Code Online (Sandbox Code Playgroud)

处理审计后,我想将审计记录移动到一个单独的表中Processed.Audit,准备在 x 天后删除。

CREATE TABLE …
Run Code Online (Sandbox Code Playgroud)

index database-design sql-server primary-key

6
推荐指数
1
解决办法
470
查看次数

DELETE 查询后数据库大小增加

我在 SQL Server 2019 的一个表中有一个数据库,其中包含大量 varbinary(MAX) 重复记录。我们需要删除重复项,因此我运行了删除查询来删除重复项。数据库大小在删除语句之前没有保持不变,而是在查询完成后增加。我即将应用 DBCC SHRINKFILE(N'myDatabase', 0),但我真的很好奇为什么数据库大小会增加。附件是我的删除查询。

DELETE from Document WHERE DocumentId in 
(
    SELECT t.DocumentId
    FROM (
        SELECT s.*,
          ROW_NUMBER() OVER (PARTITION BY s.DocumentName, s.SubmitDateTime, s.DocumentType ORDER BY s.DocumentName, s.SubmitDateTime, s.DocumentType) AS [RowCount]
        FROM Document s
        LEFT OUTER JOIN Staging b ON s.DocumentId = b.DocumentId
        LEFT OUTER JOIN RejectTable r ON  s.DocumentId = r.DocID
        WHERE b.DocumentId IS NULL
          AND r.DocID IS NULL
          AND s.SubmitDateTime IS NOT NULL
          AND s.InsertDateTime IS NOT NULL
          AND s.DocumentName IS NOT …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2019

2
推荐指数
1
解决办法
1017
查看次数