Gab*_*abe 3 performance sql-server sql-server-2012 query-performance
我有一个 900 万条记录表,大小约为 452MB(不考虑 NC 索引)。以下是身体统计数据和列
举一个简单的例子,如果我将表转储到临时表中,实际计划显示估计高达 42GB,并且实际数据大小。见下图。
我怀疑这是由于两个 varchar(4000) 列导致估计的行大小比它们大。但是,我真的不认为 42GB 正在传输 - 不确定这怎么可能。我不知道我是否因此看到性能问题,但由于这些错误的估计,查询计划看起来很可怕。为什么在估计和实际的表扫描上查询计划如此错误?
SQL Server 只是使用大致估计,varchar因为每个值平均是列容量的一半。
因此,每个varchar(4000)估计为 2,000 字节。您有两个,因此可以解释 4,496 字节估计的大部分内容。
实际上,您似乎可以减少这些列的最大大小。
这将减少估计的行大小。当计划中存在消耗内存的运算符以获得适当大小的内存授予时,拥有准确的估计行大小会有所帮助。
| 归档时间: |
|
| 查看次数: |
5672 次 |
| 最近记录: |