Mysql 5中列级的字符集

Mysql 5中列级的字符集,mysql,character-encoding,mysql5,Mysql,Character Encoding,Mysql5,我的应用程序有一个表,有两列需要utf8,其他的是拉丁语。根据定义,拉丁字符不包含非拉丁字符,utf8字符可能包含也可能不包含utf8字符。一个utf8列已编制索引,另一个未编制索引 我有三个问题: 在列级别混合字符集是一种好的做法吗 如果一行(在此表上)只包含拉丁字符而不包含utf8字符,那么数据存储和索引大小会受到什么影响?换句话说,utf8列数据/索引大小与拉丁语相同,不存储任何utf8文本 就拉丁语而言,utf8列上的数据和索引存储在数量上是如何受到影响的 谢谢,UTF-8是一种可变长度

我的应用程序有一个表,有两列需要utf8,其他的是拉丁语。根据定义,拉丁字符不包含非拉丁字符,utf8字符可能包含也可能不包含utf8字符。一个utf8列已编制索引,另一个未编制索引

我有三个问题:

在列级别混合字符集是一种好的做法吗

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

就拉丁语而言,utf8列上的数据和索引存储在数量上是如何受到影响的


谢谢,UTF-8是一种可变长度编码。将使用拉丁语1中的一个字节对内部字符进行编码;超出该值的字符将使用最多四个字节进行编码。由ASCII字符组成的字符串在UTF8和拉丁文1中具有相同的长度

在列级别混合字符集是一种好的做法吗

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


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

Pekka,存储和索引的1字节对4字节计数?最多4个字节,比如俄语2个字节或中文4个字节等等?有这些图表吗?还有一个问题,德语umlauts的计数是否超过1字节,因为它们不是US-ASCII格式?