比如 用户名,我程序的要求是10位字符以内,所以:
如果我sqlserver从varchar(50)存储改为用varchar(10)的话,1.会不会减少数据空间?
2.会不会提高我程序的效率?
3.有没有必要?小弟先谢谢

解决方案 »

  1.   

    会么?
    我感觉不会减少吧 ,..
    varchar(N) 实际存储的空间 不是根据你的实际字段长度的么,不是根据N的吧?
      

  2.   

       (1)数据存储开销。       a. 每个varchar列需要额外的两个字节,用于反映存储的数据的长度。       b. 每个可为NULL的char列,需要一些字节(空位图)来反应数据的为空性。       c. 无论实际数据的长度是多少,char按照定义的长度分配存储空间。       d. varchar根据实际存储的数据长度来分配数据存储空间。
      

  3.   

    数据库的性能方面的也有影响大小影响计算:
    Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size Max_Var_Size = 所有可变长度列的最大字节大小以上是可变列的计算有一个加最大的行字节数而Fixed_Data_Size-- 所有固定长度列的总字节大ps:
    SQL Server 2008 增加了一个动态压缩的功能,它会根据输入的数据,动态的压缩数据.
    所以,数据长度不一定和你输入的一致.
      

  4.   

    http://social.microsoft.com/Forums/zh-CN/sqlserverzhchs/thread/d8fa10e4-c08d-4a2a-9b9d-6e3b0eefe49b可以去上面的地址去看看邹老大的回复。
      

  5.   

    不会减少数据空间
    我只能说有这个必要 每个人都要有良好的数据建模习惯
    不滥用空间。提醒一下, 你的10字符是汉字还是英文, 如果是汉字的话,  需要varchar(20)