我正在寻找返回每个参考号的最新记录的最快方法。
我非常喜欢BrentOzar.com 的解决方案,但是当我添加第三个条件 (SequenceId) 时,它似乎不起作用。它似乎只有在我指定 Id 和创建日期时才有效。
要理解我的问题,您需要创建修改后的示例表,它本质上是上述参考网站上的表的副本,但稍有改动。
CREATE TABLE [dbo].[TestTable](
[Id] [int] NOT NULL,
[EffectiveDate] [date] NOT NULL,
[SequenceId] [bigint] IDENTITY(1,1) NOT NULL,
[CustomerId] [varchar](50) NOT NULL,
[AccountNo] [varchar](50) NOT NULL,
CONSTRAINT [PK_TestTable] PRIMARY KEY CLUSTERED
(
[Id] ASC,
[EffectiveDate] ASC,
[SequenceId] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[TestTable] ON
INSERT [dbo].[TestTable] ([Id], [EffectiveDate], [SequenceId], [CustomerId], [AccountNo])
VALUES (1, CAST(0xDF300B00 AS Date), 1, N'Blue', N'Green')
INSERT [dbo].[TestTable] ([Id], [EffectiveDate], [SequenceId], [CustomerId], [AccountNo])
VALUES …
Run Code Online (Sandbox Code Playgroud) performance sql-server t-sql greatest-n-per-group query-performance