我有一个具有以下结构的 SQL 数据表:
CREATE TABLE Data(
Id uniqueidentifier NOT NULL,
Date datetime NOT NULL,
Value decimal(20, 10) NULL,
RV timestamp NOT NULL,
CONSTRAINT PK_Data PRIMARY KEY CLUSTERED (Id, Date)
)
Run Code Online (Sandbox Code Playgroud)
不同 Id 的数量范围从 3000 到 50000。
表的大小变化高达超过 10 亿行。
一个 ID 可以覆盖表格的几行至 5%。
该表上执行次数最多的查询是:
SELECT Id, Date, Value, RV
FROM Data
WHERE Id = @Id
AND Date Between @StartDate AND @StopDate
Run Code Online (Sandbox Code Playgroud)
我现在必须在 Id 的子集上实现数据的增量检索,包括更新。
然后我使用了一个请求方案,其中调用者提供特定的 rowversion,检索数据块并使用返回数据的最大 rowversion 值进行后续调用。
我写了这个程序:
CREATE TYPE guid_list_tbltype AS TABLE (Id uniqueidentifier not null primary key) …Run Code Online (Sandbox Code Playgroud)