如果我在表中增加一个字段varchar(100),但是只有极少数的记录这个字段有值,这样的话,数据库文件会不会变大很多。
意思就是,加了这个字段,是不是所有的记录的长度都加了这个字段的长度?或者说是只是有值的才增加值的长度?如:10笔记录中,只有一笔记录这个字段有值,那其他9条记录中是否在数据库中占用100的空间?不知道我说明白没有

解决方案 »

  1.   

    是增加这个字段,还是增加100的长度?因为varchar(n)在数据库中不是应该不是占用n长度的空间,二十取决于字段的实际长度(不超过n),那么如果该字段为空的话,则是不是不占空间呢?
      

  2.   

    varchar 中的 VAR的意思就是变动。VARCHAR也就是可变长的字符型。你的例子中,只有这一条的记录会占用 100的空间,并且具体占用多少空间,还要看你的字段中的内容的实际长度。
      

  3.   

    MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  4.   

    VARCHAR是变长的,存储多少根据实际情况,是多少就分配多少空间。
    CHAR是定长的,不管实际多少,后面都补空格,补全到定义的长度。
      

  5.   

    不会影响空间 不装就不增长 这也是varchar的优点
      

  6.   


    我觉得如果是INNODB的,而且这个字段是主键字段,那么在后面修改了这个字段的值,物理存储空间也是连续的,在修改的时候会移动其他记录,空出位置个新值。INNODB是按主键索引聚集的。理解不深,恳请狼头哥斧正。
      

  7.   

    不会的,varchar和char的区别就是 是否预先就分配你定义的那么长的空间。varchar是根据实际存储内容的长度来分配的。