你用google吗?
char varchar 区别

解决方案 »

  1.   

    char:固定长度的串,在右边补齐空格,达到指定的长度。检索值时,后缀的空格被删除;
    varchar:可变长度的串,其中的后缀空格在存储值时被删除。
      

  2.   

    char和varchar的长度都在1到8000之间,它们的区别在于char是定长字符数据,而varchar是变长字符数据。所谓定长就是长度固定的,当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面填充,使长度达到相应的长度;而变长字符数据则不会以空格填充。
      

  3.   

    这些我都知道.
    听你们的意思,就是说数据库读CHAR类型的数据都是先按指定长度读取后再删掉后面多余的空格了?
    那么如果插入的数据很短,而字段长度很长,在读写频繁的情况下,按这种做法,I/O性不就是不如VARCHAR了吗(造成浪费)?
      

  4.   

    对啊,char会造成空间浪费,但是有速度优势;而varchar节省了空间,但是速度就不如char.
    请问tyttytzhz(可乐)你说的长度是指字节还是字符?字符应该是0~255个字符吧。
      

  5.   

    现在的硬盘容量都很大,在255字节范围内,把VARCHAR都换成CHAR是不是更好呢?
      

  6.   

    还有一个问题你要注意
    表中只要存在一个varchar类型的字段,那么所有的char字段都会自动变成varchar类型;
    但是,长度在4以内的char类型不会转换成varchar,反而是长度在4以内的varchar类型会被转换成char类型。
    也就是说,MySQL设计的时候,也已经考虑了速度和空间的问题,并且也建议不要让这两种定长和变长的类型同处一个表。这个是MySQL的特色,你可以自己做试验。
    对于我们来说,该怎么用就怎么用,不必强求速度或者空间。
      

  7.   

    char适合与保存短字符内容,比如说是 "YS","AD","OK","NO","DL",之类的标志控制符
    用于检索方面的,但是前提是,必须是定长的字符才能够保证效率,
    vchar适合保存容量较大的内容。不适合保存标志类信息,他的优势是节省存储空间。
    为了提高效率吧vchar转传撑char没有什么意义