当设定好varchar或者nvarchar的字符长度时,例如: varchar(100), 那么无论我存一个还是二十个字符,它都应该会留 出100个字符的空间吧? 如果是这样的话那么它和char(100)性能不就一样了? 那为什么网上有些资料说定长类型比不定长类型的性能要好?期待您的解答,谢谢!

解决方案 »

  1.   

    varchar\nvarchar 只留占用的空间,也就是实际多长就是多长
      

  2.   

    varchar
    存储大小是输入数据的实际长度 + 2 个字节.
    即便声明大小为100,也根据使用实际长度来分配空间。nvarchar 
    存储大小是所输入字符个数的两倍 + 2 个字节
    定长类型比不定长类型的性能要好??这个应该说的有语境吧,比如存储空间大小方面考虑等。
    我个人觉得,既然存在这两种类型,必然在某些情况下,各自有各自的有点。所以,两个谁更优,关键是看用在哪儿了!
    参考哈!
     
      

  3.   

    例如,你的是段是varchar(100),
    如果你保存的内容只有10个,那么后面90个是空格,针对varchar类型,其后面90个空格是保存的.也就是说,实际上只有10个字符的空间.
    但如果是char(100),则保存后面90个空格.
    两者的区别就在这里.
      

  4.   

    varchar(100), 那么无论我存一个还是二十个字符,它都应该会留出100个字符的空间吧?
    不是VARCHAR,仅会占用这20字符的空间+3字节长度标志= 23 字符。
    而CHAR(100) , 则会填充空格至100个字符
      

  5.   

    当设定好varchar或者nvarchar的字符长度时,例如: varchar(100), 那么无论我存一个还是二十个字符,它都应该会留 出100个字符的空间吧? 如果是这样的话那么它和char(100)性能不就一样了? 那为什么网上有些资料说定长类型比不定长类型的性能要好? 
    期待您的解答,谢谢!