奇怪的多列统计问题

时间:2018-10-30 16:36:42

标签: sql-server tsql

我有一张表,其主键在两列上

enter image description here

我发现的是,当我在一个主键列上运行查询时,

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命令时没有更改)感到困惑吗?

0 个答案:

没有答案