【发布时间】:2011-09-14 16:24:11
【问题描述】:
我的 MySQL 表中有一个 char(1) 类型的字段,它基本上只能有值 m 或 f。其当前排序规则设置为 ut8_unicode_ci。我在考虑是否应该或不应该将排序规则更改为更简单的东西,例如拉丁语,因为从未使用过完整的 utf8 字符集 - 只有字符 m 或 f。这会改变什么吗?
【问题讨论】:
标签: mysql utf-8 collation latin
我的 MySQL 表中有一个 char(1) 类型的字段,它基本上只能有值 m 或 f。其当前排序规则设置为 ut8_unicode_ci。我在考虑是否应该或不应该将排序规则更改为更简单的东西,例如拉丁语,因为从未使用过完整的 utf8 字符集 - 只有字符 m 或 f。这会改变什么吗?
【问题讨论】:
标签: mysql utf-8 collation latin
排序规则是定义字符应该如何排序的规则。想象一个字母序列 - A 是第一个字母,Z 是最后一个字母(英文)。排序规则表示A 是第一个,Z 是最后一个,它还有助于定义字符的比较方式。简而言之 - 整理与您的情况无关。
您应该将该字段设置为 tinyint,直到 MySQL 稍后提供布尔类型。这样您就可以绕过任何时候可能出现的任何字符集问题,尽管在您的示例中它们并不是真正重要的。
【讨论】:
我怀疑它是否会产生任何可衡量的差异,但如果 m 和 f 是唯一可能的值,那么 utf8_bin 应该完全产生与 utf8_unicode_ci 相同的结果(或大多数其他排序算法)。由于该排序规则进行了简单的二进制比较,因此它肯定是最快的排序规则。
【讨论】: