我有一张表,其主键在两列上
我发现的是,当我在一个主键列上运行查询时,
SELECT I.*
FROM
..PortfolioBreakdownItem i
WHERE
I.BreakdownSnapshotId = 900225032
以某种方式估算是错误的。根据执行计划,实际行数为10,但估计行数约为4000。
我认为统计数据不正确,所以我这样做了:
UPDATE STATISTICS PortfolioBreakdownItem
但是,它没有任何影响。
因此,我在备份服务器上比较了同一张表,并意识到那里的另一列(ItemWeight)上存在额外的统计信息。
好吧,我在服务器上创建了该统计信息,并且没有任何区别。
CREATE STATISTICS [_WA_Sys_00000004_21B3D0F3] ON [dbo].[PortfolioBreakdownItem]([ItemWeight])
奇怪的是,当我丢弃复制的统计信息并再次在语句上方运行时,估计值完全改变并反映了正确的行数。
因此,我对为什么估算值突然更改(以及为什么在运行UPDATE STATISTICS命令时没有更改)感到困惑吗?