是否可以将行大小估计与最大列宽分离?

Tur*_*rch 5 sql-server optimization

换句话说,是否可以声明一列VARCHAR(n)并使其估计大小不是n/2?

一个示例用例可能是存储 URL - 您希望大多数是相对的并且少于 20 个字符左右(例如“About/AboutUs”),但希望偶尔支持带有大量查询字符串参数的长 URL。

Mar*_*ith 6

不。

我不相信这是可能的。

在平均长度大于启发式计算的长度但仍小于 4,000 字节的情况下,可以使用 a 向上按摩,CAST但即使如此,您也可能需要对查询语法进行一些修改以鼓励CAST在任何之前发生依赖于估计行大小的内存消耗运算符。

在这种情况下,这是CAST,以较短的大小显然不会不截断数据的可能性工作。

错误估计的可能不利方面是可能基于不正确的信息来计算内存授权。

我以前想知道为什么字符串列的统计信息不跟踪这一点。也许就事物的规模而言,它在客观上并没有那么重要。