mysql应该使用char作为unicode吗?

时间:2013-08-06 16:30:04

标签: mysql unicode create-table

我只是mysql中的新手。

我想宣布我的表格是这样的,

    CREATE TABLE `test` (
      `NO` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
      `ID` char(50) CHARACTER SET utf8 NOT NULL ,
      `FIRST_NAME` char(50)CHARACTER SET utf8 NOT NULL,
      `LAST_NAME` smallint(50)char(50)CHARACTER SET utf8 NOT NULL,
      PRIMARY KEY (`NO`),
   )

我在mysql中读到了关于char和varchar的内容

The length of a CHAR column is fixed to the length that you declare when you create the table.

我的问题是,如果我对中文,日文,韩文或其他unicode字符使用unicode char(50),这些列是否会在数据库中使用过多的存储并影响性能?

对于英文字符,如果我这样声明我的表格,它最多只能接受50个字符?

有没有更好的方法或使用char(100)作为unicode?

如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:1)

根据MySQL manualCHAR(M)列所需的字节数为 M x w ,其中 w < / em>是“字符集中最大长度字符所需的字节数”。这清楚地表明,CHAR(50)列将存储50个字符,而不是50个字节。如果你的角色碰巧是中国人等,它仍然会存储多达50个。请注意,VARCHAR(50)最多也会存储50个字符,但如果忽略VARCHAR列附带的1-2字节开销,则会占用比CHAR(50)更少的存储空间存储少于50个字符的列。

编辑这仅适用于使用MySQL 5.5或更高版本的情况。早期版本将字符和文本字段的长度解释为字节,而不是字符。