Gabe Asked: 2015-10-22 08:21:37 +0800 CST2015-10-22 08:21:37 +0800 CST 2015-10-22 08:21:37 +0800 CST 估计的行大小和估计的数据大小不正确 772 我有一个 900 万条记录表,大小约为 452MB(不考虑 NC 索引)。以下是身体数据和列 举个简单的例子,如果我将表转储到临时表中,实际计划显示的估计和实际数据大小高达 42GB。见下图。 我怀疑这是由于两个 varchar(4000) 列导致估计的行大小比它们大。但是,我真的不认为正在传输 42GB - 不知道这怎么可能。我不知道我是否因此而看到性能问题,但由于这些错误的估计,查询计划看起来很可怕。为什么查询计划在估计的和实际的表扫描上如此错误? sql-server sql-server-2012 1 个回答 Voted Best Answer Martin Smith 2015-10-22T08:33:02+08:002015-10-22T08:33:02+08:00 SQL Server 只是使用一个粗略的估计,varchar即每个值平均为列容量的一半。 因此,每个varchar(4000)估计为 2,000 字节。您有其中两个,因此可以解释 4,496 字节估计的大部分。 似乎实际上您可以减小这些列的最大大小。 这将减少估计的行大小。当计划中存在消耗内存的运算符以获得适当大小的内存授予时,准确估计行大小会有所帮助。
SQL Server 只是使用一个粗略的估计,
varchar
即每个值平均为列容量的一半。因此,每个
varchar(4000)
估计为 2,000 字节。您有其中两个,因此可以解释 4,496 字节估计的大部分。似乎实际上您可以减小这些列的最大大小。
这将减少估计的行大小。当计划中存在消耗内存的运算符以获得适当大小的内存授予时,准确估计行大小会有所帮助。