1

我的应用程序有一个表,其中有两列需要 utf8,其他列是拉丁文。根据定义,拉丁字符不包含非拉丁字符,而 utf8 字符可能包含也可能不包含 utf8 字符。一个 utf8 列被索引,而另一个则没有。

我有三个问题:

在列级别混合字符集是一种好习惯吗?

如果一行(在此表上)仅包含拉丁字符而没有 utf8 字符,数据存储和索引大小如何受到影响?换句话说,utf8 列数据/索引大小与拉丁文相同,但不存储任何 utf8 文本。

相对于拉丁文,utf8 列上的数据和索引存储如何定量地受到影响?

谢谢

4

1 回答 1

0

UTF-8 是一种可变长度编码。ASCII 集中的字符将被编码为 latin1 中的一个字节;超出此范围的字符将使用最多四个字节进行编码。由 ASCII 字符组成的字符串在 UTF8 和 latin1 中具有相同的长度。

在列级别混合字符集是一种好习惯吗?

我从来没有这样做过,并且倾向于说不,因为它不必要地使数据库模式复杂化。虽然数据库引擎应该能够很好地处理它,但出于存储考虑,我不会使用混合字符集。节省的钱充其量是最小的。

我能想到的混合字符集的唯一正当理由是对特定排序顺序和/或区分大小写/重音/不区分搜索使用不同的排序规则。

于 2010-12-22T18:44:46.417 回答