3
如何在DateAdd()约束下的索引中改进视图中1行的估计
使用Microsoft SQL Server 2012(SP3)(KB3072779)-11.0.6020.0(X64)。 给定一个表和索引: create table [User].[Session] ( SessionId int identity(1, 1) not null primary key CreatedUtc datetime2(7) not null default sysutcdatetime()) ) create nonclustered index [IX_User_Session_CreatedUtc] on [User].[Session]([CreatedUtc]) include (SessionId) 以下每个查询的“实际行数”为3.1M,估计的行数显示为注释。 当这些查询在View中提供另一个查询时,由于1行估算,优化器选择循环连接。 如何在此基础上改进估计,以避免覆盖父查询联接提示或求助于SP? 使用硬编码日期非常有用: select distinct SessionId from [User].Session -- 2.9M (great) where CreatedUtc > '04/08/2015' -- but …