SQL更好的性能:char(10)和trim或varchar(10)

时间:2010-04-15 18:53:52

标签: sql-server performance char varchar

我有一个使用代码的数据库。每个代码可以是两个字符到十个字符长的任何地方。

在MS SQL Server中,对于这些代码使用char(10)和使用它们时RTRIM是否更好,或者我应该使用varchar(10)而不必担心修剪额外的空格?我需要摆脱空白,因为代码将在应用程序逻辑中用于比较,而不是。

至于平均代码长度,很难说清楚。假设所有代码都是1到10之间的随机长度。 修改:对于代码的平均长度,粗略估计约为4.7个字符。

5 个答案:

答案 0 :(得分:6)

我投票给varchar。

我说varchar是为了避免TRIM会导致索引使用无效(除非你使用计算列等会破坏目的,不是吗?)。

否则,在10的长度,它将是50/50,但TRIM会向varchar提供平衡,并超过固定长度的利益

答案 1 :(得分:3)

作为一般规则,总是喜欢较小的存储而不是额外的CPU。因为数据库性能的驱动因素始终是IO,较小的数据记录意味着每页更多的记录,这反过来意味着更少的IO请求。处理可变长度所涉及的额外CPU不会成为一个因素。从历史上看,在80年代甚至90年代的黑暗时代,它可能是一个可衡量的因素,但今天只是噪音。因为CPU和内存访问量大大增加,但IO速度一直保持不变。这就是今天“旧书”建议不适用的原因。除非你有像char(2)或类似的常量字段,否则只需使用varchar。

答案 2 :(得分:2)

我相信你无法分辨两者之间的速度差异。

答案 3 :(得分:1)

您的要求是需要使用varchar的人的教科书定义。

如果您想担心性能问题,请担心数据库设计和编写好的SQL。 Char vs VarChar内部结构由数据库供应商进行了优化。

答案 4 :(得分:0)

在一本旧书中我读到,一般来说,对于大多数记录来说,字符串是一个更好的选择,实际字符串长度至少是最大值的60%;在您的示例中 - 如果超过一半的记录长度为6或更长。否则,请使用varchar。