我有一个使用密码的数据库。每个代码的长度可以从两个字符到十个字符不等。
在MS中,对这些代码使用char(10)并在它们出现时使用RTRIM是更好的性能,还是应该使用varchar(10)而不必担心裁剪额外的空格?我需要去掉空格,因为代码随后将被用于应用程序逻辑进行比较和不使用什么。
至于平均代码长度,很难准确判断。假设所有代码都是1到10之间的随机长度。编辑:对于代码的平均长度,粗略估计约为4.7个字符。
发布于 2010-04-15 18:56:43
我会投票给伐查。
我说varchar是为了避免导致索引使用无效的TRIM (除非您使用了一个与目的相反的计算列等等,不是吗?)
否则,在10长的时候,它将是50/50,但修剪后的平衡朝向varchar,并赢得了固定长度的利益。
发布于 2010-04-15 20:17:01
作为一般规则,总是倾向于更小的存储而不是额外的CPU。因为数据库性能的驱动因素总是IO,而较小的数据记录意味着每页有更多的记录,而这又意味着更少的IO请求。处理可变长度所涉及的额外CPU不会成为一个因素。从历史上看,在80年代甚至90年代的黑暗时代,这可能是一个可衡量的因素,但今天只是噪音。因为CPU和内存访问量大幅增加,但IO速度基本保持不变。这就是为什么“旧书”的建议今天不适用的原因。除非你有一个像char(2)这样的常量字段或者类似的字段,只要使用varchar,总是这样。
发布于 2010-04-15 19:05:15
我相信你不会分辨出两者的速度差别。
https://stackoverflow.com/questions/2648124
复制相似问题