Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 数据库与#x27;s字符集,表';s字符集和列';charset?不同的字符集是否会导致性能问题?_Mysql_Asp.net_Character Encoding_Collation_Utf8mb4 - Fatal编程技术网

Mysql 数据库与#x27;s字符集,表';s字符集和列';charset?不同的字符集是否会导致性能问题?

Mysql 数据库与#x27;s字符集,表';s字符集和列';charset?不同的字符集是否会导致性能问题?,mysql,asp.net,character-encoding,collation,utf8mb4,Mysql,Asp.net,Character Encoding,Collation,Utf8mb4,我正在使用ASP.net开发一个网站,我的数据库是MYSQL。在那里,用户可以提交文章。这个网站是国际性的,所以我不想把语言限制为英语 所以我决定做几件事。如果我做了错误的选择,请指导我 1) 我选择utf8mb4作为数据库字符集。因为它是UTF8的改进版本,用于存储更多字符。我的选择正确吗?我的意思是,我只有几个需要使用utf8mb4的表。那么我应该使用Latin1作为数据库字符集吗 2) 我不知道上面的字符集使用哪个排序规则。我决定使用utf8mb4瑞典语。或者我应该使用通用Ci或任何其他

我正在使用ASP.net开发一个网站,我的数据库是MYSQL。在那里,用户可以提交文章。这个网站是国际性的,所以我不想把语言限制为英语

所以我决定做几件事。如果我做了错误的选择,请指导我

1) 我选择utf8mb4作为数据库字符集。因为它是UTF8的改进版本,用于存储更多字符。我的选择正确吗?我的意思是,我只有几个需要使用utf8mb4的表。那么我应该使用Latin1作为数据库字符集吗

2) 我不知道上面的字符集使用哪个排序规则。我决定使用utf8mb4瑞典语。或者我应该使用通用Ci或任何其他

3) 在我的表中,大多数表不需要utf8mb4字符集。拉丁语1瑞典人将完成这项工作。所以,即使DB位于另一个字符集和排序规则中,我也可以在特定的字符集和排序规则下维护选定的表吗

4) 我是否可以将utf8mb4字符集用于表中具有拉丁文1瑞典文作为字符集的特定列

如果可以,那么数据库字符集、表字符集和列字符集之间的关系是什么

不同的字符集是否会导致性能问题


非常感谢。

数据库字符集由表继承,除非您重写它。(我建议在表格级别明确。)

表字符集由表中的列继承。因为通常只有一个字符集,所以这种继承是可以的。另外,当您执行
showcreatetable
每个列的设置时,就非常清楚了,而不必查看数据库或系统

走向国际——使用utf8或utf8mb4。我同意utf8mb4是一个更好的选择,尤其是对于中文和一些表情符号

character\u set%
——只有客户端、连接和结果才重要。这三个是由
集合名称utf8mb4
设置的。别管其他人

utf8mb4的默认排序规则是utf8mb4_general_ci,如果您有多种语言,这可能是一个不错的选择。另一种选择是utf8mb4_unicode_ci。我在第二章中更多地讨论了“组合变音符号”。本节给出了这两种排序规则不同之处的示例:

另请参见“最佳实践”部分

拉丁文1小于西欧文本的utf8。MySQL将在需要时进行适当的转换,因此这不是问题。但是,我不希望通过混合字符集来混淆程序员。请记住,将现有表列从latin1转换为utf8需要一些努力、可能的停机时间和可能的风险

4) 我是否可以将utf8mb4字符集用于表中具有拉丁文1瑞典文作为字符集的特定列

对。每列(但不是每行)可以有不同的字符集和/或排序规则

不同字符集的存在本身并不是一种性能。当两列具有不同的字符集和/或排序规则时,
中的col1=col2
(以及其他情况)可能会对您产生影响。如果MySQL发现了一个不容易处理的差异,它将放弃一个本来非常好的索引