Mysql 是否可以为特定表的特定列启用emojis?
首先,我想向你们保证,我已经完成了我的“家庭作业”,并且已经阅读了,并且。另外,我前面的问题中有一个与这个问题密切相关,但在这个问题中,我讨论的是flourishlib与utf8mb4的兼容性问题。这个问题涉及更深层次的问题。假设我有几个表,我只想修改几个列以使用utf8mb4编码,以便在更改后保留一些存储空间和性能。如果我将整个数据库更改为utf8mb4编码,那么它的大小将增加33%,这也将严重影响其性能。因此,我们从三个不同的表中选择了四列来支持emojis。这些是:Mysql 是否可以为特定表的特定列启用emojis?,mysql,utf-8,emoji,utf8mb4,Mysql,Utf 8,Emoji,Utf8mb4,首先,我想向你们保证,我已经完成了我的“家庭作业”,并且已经阅读了,并且。另外,我前面的问题中有一个与这个问题密切相关,但在这个问题中,我讨论的是flourishlib与utf8mb4的兼容性问题。这个问题涉及更深层次的问题。假设我有几个表,我只想修改几个列以使用utf8mb4编码,以便在更改后保留一些存储空间和性能。如果我将整个数据库更改为utf8mb4编码,那么它的大小将增加33%,这也将严重影响其性能。因此,我们从三个不同的表中选择了四列来支持emojis。这些是: users.bio(
(tinytext,utf8\u general\u ci)users.bio
(长文本,通用)问题。问题
(长文本,通用)问题。回答
(tinytext,utf8\u general\u ci)comments.comment
alter table comments change comment tinytext字符集utf8mb4 collate utf8mb4\u unicode\u ci;
alter table用户更改bio bio tinytext字符集utf8mb4 collate utf8mb4\u unicode\u ci;
更改表格问题更改问题长文本字符集utf8mb4校对utf8mb4\U unicode\U ci;
更改表格问题更改答案答案长文本字符集utf8mb4校对utf8mb4\u unicode\u ci;
期望:
- 这将使指定的列使用utf8mb4而不是utf8
- 现有数据将正确转换为utf8mb4,即保留以前的文本,用户将能够正确阅读其内容
- 其他列将不会更改
- 涉及受影响表的查询速度将较慢
我的期望准确吗?我需要更换连接吗?谢谢在任何存储中文的列中都需要utf8mb4 在
VARCHAR(…)
utf8mb4中,每个“字符”占用1-4字节。没有33%的增长。
另一方面,CHAR(10)utf8mb4
总是分配40字节
您确实需要确定您的客户所说的是utf8mb4,而不仅仅是utf8。这在连接中的某个参数中出现,或与设置名称utf8mb4
一起出现
如果您需要自动执行更改
,那么通过“选择到信息”模式生成它们非常容易
附录
期望1-3:是的
期望4(涉及受影响表的查询速度将较慢)——处理速度基本相同。。。。很明显,SO的降价不支持在列表后面紧跟一个代码块。瑞克,我不喜欢汉字。正如我在问题中所描述的,我们正在讨论表情符号。另外,您关于varchar的大小没有增加的评论是无效的。想象一下,utf8中存储了一个10个字符长的varchar。这需要30个字节。现在,想象一个存储在utf8mb4中的10个字符长的varchar。这需要40个字节。增加33%。此外,如果您再次阅读该问题,您将看到涉及的类型有tinytext和longtext。我需要4个修改,不需要自动化。你的回答并没有真正解决这个问题。我真的很想接受它,但您需要进行编辑以确保它解决了问题。与此同时,我已经解决了这个问题,所以我要么接受并回答,要么写我自己的。看来你关于瓦查尔斯的论点是正确的,但是,如果不涉及varchar,则不会影响此问题。对于
utf8
,不带emojis的文本将在varchar
或Text
中占据与ut8mb4
完全相同的空间。(我回答了“期望”)好的,阿登达给了你答案,谢谢。我不会在这里单独写一个答案。