单个表中的多个字符集:MySql/Mariadb

单个表中的多个字符集:MySql/Mariadb,mysql,database,database-design,mariadb,Mysql,Database,Database Design,Mariadb,我陷入困境,需要帮助/建议才能做出决定。 我有一张几乎有2000万行的桌子,每六个月就有很大的增长。我的表格默认字符集是utf8mb4。 它主要由7列组成。其中一列需要为utf8mb4 我决定在其余的专栏中使用拉丁语和瑞典语。 这会妨碍桌子吗?如果在最坏的情况下,我需要更改表 考虑到行数的情况,我无法确定多个字符集是好是坏。首先,让我们明确两个方面: “字符集”是编码,如拉丁语1、utf8、utf8mb4 “排序”是如何排序的,如拉丁文1_瑞典语_ci、utf8_通用_ci、utf8mb4_u

我陷入困境,需要帮助/建议才能做出决定。 我有一张几乎有2000万行的桌子,每六个月就有很大的增长。我的表格默认字符集是utf8mb4。 它主要由7列组成。其中一列需要为utf8mb4

我决定在其余的专栏中使用拉丁语和瑞典语。 这会妨碍桌子吗?如果在最坏的情况下,我需要更改表


考虑到行数的情况,我无法确定多个字符集是好是坏。

首先,让我们明确两个方面:

  • “字符集”是编码,如拉丁语1、utf8、utf8mb4

  • “排序”是如何排序的,如拉丁文1_瑞典语_ci、utf8_通用_ci、utf8mb4_unicode_520_ci

使用不同的字符集和/或排序规则创建不同的列没有问题。列不需要与表的默认值匹配

通常,最好对所有列使用utf8mb4字符集。但这不是一个严格的要求。混合不会“妨碍”操作

altertable。。CONVER TO..
是一种将(一个表的)所有列正确转换为diff字符集的方法,假设它们根据旧声明正确编码

altertable。。修改列x VARCHAR(..)字符集..
是更改一列的方法。注意:必须重复大小、默认值、空/不空等

无论您如何操作,更改20M行表中一个或多个列的字符集都需要一些时间

连接一个字符串列上的两个表时,如果两个表对要连接的列具有相同的字符集和排序规则,则效率更高