当数据场为定长时,如:10位字符编码,用char,可以提高速度;
当数据场为不定长,但有最大长度限制时,如:100位字符说明,用varchar,可以节省空间.

解决方案 »

  1.   

    如果是不定长的定义为char,则用空格补长到定义长度
      

  2.   

    varchar只是变长(最大长度限制下)的char,需要视你的具体需要确定,如tj_dns(愉快的登山者)所说,对于长度不大或者是定长的数据使用char好,比如记录IP地址,如果你不确定具体多长,在设置了足够的长度时,使用varchar可以节省空间,但不如char效率高。要注意的是:varchar是不会自动添加空格的,而char会添加空格补足长度,这个时候,如果进行处理,可能要进行rtrim的处理,但对于char(10),如果你的内容为"char "时,就没有办法确定具体值,比如密码,有时候需要把空格也当作密码,而使用char则不能满足。http://expert.csdn.net/Expert/TopicView1.asp?id=1839837或许会对你有所帮助。
      

  3.   

    反正我这种菜鸟都用varchar
    不就是牺牲一点速度吗?
      

  4.   

    大多数情况用varchar固定长度和要有索引的列用char
      

  5.   

    如果该列经常被更新,并且长度变化,可以考虑用char
      

  6.   

    如果用Char的话,势必要在引用时使用rtrim,是不是会变得更慢?
      

  7.   

    char 和 varchar
    固定长度 (char) 或可变长度 (varchar) 字符数据类型。char[(n)]长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。varchar[(n)]长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。
      

  8.   

    定长时用char不定长时用varchar,对索引什么的建议用char可以 提高性能