我正在努力提高MySQL的性能。曾经在使用Latin1 charset时学到的东西比使用UTF8更快,因为latin1使用更少的字节..但我想知道如果我改变了整理,数据会发生什么?在我今天的申请中,大部分内容都是阿美利亚语,但我不能保证不会有任何其他语言商店。有人存储英语以外的数据我并不太关心这些数据。
我的问题: 1)如果我将数据库中的校对更改为latin1,如果数据不是用美式英语写的,那么数据会发生什么? 2)哪个lation1_?使用latin1_bin,latin1_general_ci或latin1_general_cs?如果可能的话有什么区别? 3)在更改数据库的排序规则时,我是否还需要单独更改每个表的排序规则?
由于
答案 0 :(得分:0)
如果UTF 8有奇怪的字符,它只使用额外的字节。所以,你不应该改变你的整理。它无济于事。 UTF 16开发用于保存所有语言的所有字符,是的,它使用16位,所以如果你使用utf16,如果你大多数都有标准的拉丁字符,我会建议使用utf8。 utf 8是妥协。它有一个特殊字符,意思是“更多字节到来”,如果它看到它,它会将下一个字节组合在一起。但是,如果您只有拉丁字符,则字节数与拉丁校对的数字完全相同。
要具体回答,您可以为新表设置默认的合作,但是,您必须为每个现有表执行此操作。你可以用一个列出表的sql语句然后在每个表上运行sql语句来改变它。 (更改1并注意sql语句)。但同样,不要这样做。 utf8是有原因的标准。你的表现问题在其他地方。