gpt4 book ai didi

mysql 我应该使用 char 作为 unicode 吗?

转载 作者:行者123 更新时间:2023-11-29 13:41:01 24 4
gpt4 key购买 nike

我只是 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 是否合适?

如果我错了,请纠正我。

最佳答案

根据MySQL manualCHAR(M) 列所需的字节数为 M x w,其中 w 为“字符集中最大长度字符所需的字节数”。这清楚地表明 CHAR(50) 列将存储 50 个字符,而不是 50 个字节。如果你的字符恰好是中文等,它仍然会存储最多 50 个字符。请注意,VARCHAR(50) 还将存储最多 50 个字符,但(如果忽略 VARCHAR 列附带的 1-2 字节开销)会占用当存储的字符少于 50 个时,存储空间比 CHAR(50) 列少。

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

关于mysql 我应该使用 char 作为 unicode 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18085623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com