在MySQL中,我应该选择哪种排序规则?

时间:2009-08-05 03:53:42

标签: mysql collation

当我通过phpMyAdmin创建一个新的MySQL数据库时,我可以选择排序规则(例如-default,armscii8,ascii,...和UTF-8)。我知道的是UTF-8,因为我总是在HTML源代码中看到这一点。但是默认排序规则是什么?这些选择之间有什么区别,我应该使用哪一个?

3 个答案:

答案 0 :(得分:24)

Collat​​ion告诉数据库如何执行字符串匹配和排序。它应该与你的charset相匹配。

如果使用UTF-8,则排序规则应为utf8_general_ci。这将按Unicode顺序排序(不区分大小写),并且适用于大多数语言。它还保留ASCII和Latin1顺序。

默认排序规则通常是latin1。

答案 1 :(得分:17)

排序实际上不是默认排序,它会将默认排序规则作为首选。

我们所讨论的是collation,或者数据库将在其文本类型中使用的字符集。您的默认选项通常基于区域设置,因此,除非您计划进行全球化,否则通常是非常敏锐的。

排序还可以确定大小写和重音敏感度(即'大'=''大'?对于CI,它是)。查看所有选项的MySQL list

答案 2 :(得分:0)

简短的答案:在MySql和MariaDB中进行排序规则时,始终使用utf8mb4(特别是utf8mb4_unicode_ci)。

长答案:

  

MySQL的 utf8 编码名称笨拙,因为它与正确的UTF-8编码不同。它不提供完全的Unicode支持,这可能导致数据丢失或安全漏洞。

     

幸运的是,MySQL 5.5.3(于2010年初发布)引入了一种称为 utf8mb4 的新编码,该编码映射到适当的UTF-8,因此完全支持Unicode。

在此处阅读全文:https://mathiasbynens.be/notes/mysql-utf8mb4

关于选择哪个特定的utf8mb,请选择utf8mb4_unicode_ci,以便始终正确地处理排序,而对性能的影响最小/不明显。在此处查看更多详细信息:What's the difference between utf8_general_ci and utf8_unicode_ci