我们知道,使用utf8存储数据的时候,字母数字是占一个字节的,而汉字才占3个字节,所以中英混合或英文较多的文件里,utf8是节约空间的,而且支持多国语言,这都没有问题。问题是在我进行数据库设计时。我如果把字段设置成utf8,那么在固定长度的字段里,它不管三七二一,全面把实际长度乘以3。以满足最大可能的需要。实际上,我的有些字段是只存储英文的,只有少数字节会中英混合。
我想所有的字符类字段均用二进制存储,同时保证我的读写前端都是同种编码,比如utf8。这在技术上有什么困难,在查询与搜索上会不会影响速度?求解。

解决方案 »

  1.   

    应该用utf8,对速度影响完全可以忽略掉,用二进制的方式,以后扩展或者做应用会死的很难看。
      

  2.   

    其实并非如此, MYSQL中定义 char(10) 是指十个字符,不是十个字节。
      

  3.   

    char(2),你可以测试分别测试可以存多少英文和多少汉字,混编又是多少。
      

  4.   

    综合考虑utf8还是比较好的,不能只把眼光放在缺点上。
    ---------------------------------------------------
    在固定长度的字段里,它不管三七二一,全面把实际长度乘以3。
    我也想知道你怎么判断的?
    你用length 函数测试长度,这肯定没有乘3的。
      

  5.   

    MYSQL中定义 char(10) 是指十个字符,不是十个字节。
    就是这个意思,你使用char(10)选择的是utf8,其长度必然是30字节。
    这个毫无疑问。因为在数据库的固定字段里面,所有的字段物理长度必然相同,这才在索引寻址时显示固定长度的优势。char(10)是允许装入10个汉字。当然是30个字节,而且你也只能装入10个字母,