首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以为特定表的特定列启用emojis?

是否可以为特定表的特定列启用emojis?
EN

Stack Overflow用户
提问于 2015-09-07 22:22:45
回答 1查看 641关注 0票数 1

首先,我想向你保证,我已经做了我的“家庭作业”,并阅读了。另外,我以前的问题的与这个问题密切相关,但在这个问题中,我要讨论的是flourishlib与utf8mb4的兼容性问题。这个问题涉及一个更深层次的问题。假设我有几个表,我只想修改几个列以进行utf8mb4编码,以便在更改后保留一些存储空间和性能。如果我将整个数据库更改为utf8mb4编码,那么它的大小将增加33%,这也会严重影响它的性能。因此,我们从三个不同的表中选择了四列来支持emojis。它们是:

  • users.bio (tinytext,utf8_general_ci)
  • questions.question (长文本,utf8_general_ci)
  • questions.answer (长文本,ut8_general_ci)
  • comments.comment (tinytext,utf8_general_ci)

因此,我的行动计划如下:

  1. 创建数据库的备份
  2. 运行以下命令:
代码语言:javascript
复制
alter table comments change comment comment tinytext character set utf8mb4 collate utf8mb4_unicode_ci;
alter table users change bio bio tinytext character set utf8mb4 collate utf8mb4_unicode_ci;
alter table questions change question question longtext character set utf8mb4 collate utf8mb4_unicode_ci;
alter table questions change answer answer longtext character set utf8mb4 collate utf8mb4_unicode_ci;

期望:

  • 这应该使指定的列使用utf8mb4而不是utf8。
  • 现有的数据将被正确地转换为utf8mb4,即以前的文本将被保留,用户将能够正确地读取他们的内容。
  • 其他列不会更改
  • 涉及受影响表的查询将慢一些。

我的期望准确吗?我需要改变连接吗?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-08 06:52:10

在存储中文的任何列中都需要utf8mb4。

VARCHAR(...) utf8mb4中,每个“字符”占用1-4字节。不增加33%。另一方面,CHAR(10) utf8mb4总是分配40个字节。

您确实需要确定您的客户正在谈论utf8mb4,而不仅仅是utf8。在连接中或在SET NAMES utf8mb4中包含一些参数。

如果您需要自动化ALTERs,那么很容易通过SELECT到information_schema生成它们。

增编

期望值1-3:是的。

期望值4(涉及受影响表的查询速度较慢) --处理速度基本相同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32446739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档