什么数据类型用于MySQL的唯一键/索引?
MySQL中用于唯一键/索引的数据类型选择问题的出现原因是为了确定在MySQL中使用哪种数据类型来创建唯一键/索引。解决方法如下:
通常情况下,你有两个选择:
一种是反映你正在处理的数据的现实情况的“自然键”。
例如,电话号码可能是一个有效的用于呼叫列表的主键,但对于医疗保险受益人的列表来说,它根本不合适,因为许多人可能在一个家庭中共享同一个电话号码。注意,自然键可以由多个字段组成。例如,制造商、型号和年份的组合可能是汽车型号列表的键。
另一方面,“替代键”只是分配给行的任意值。如果你选择这种方式,我建议使用GUID(在MySQL中为UUID)。在MySQL中表示GUID的最佳方式是使用char(36)列。GUID是永久唯一的,并且可以无限使用。
如果坚持使用普通的数字,那么INT可能是可以的,或者你可以使用BIGINT来确保更加安全。
BIGINT UNSIGNED ZEROFILL
问题的出现原因:在MySQL中,当需要创建一个唯一键或索引时,需要选择合适的数据类型来存储数据。然而,对于某些开发者来说,选择合适的数据类型可能会有困惑,因为他们可能不确定应该使用什么数据类型来实现这个目标。
解决方法:在这个讨论中,有人建议使用INT(11) UNSIGNED ZEROFILL NOT NULL
作为唯一键或索引的数据类型。他们指出,INT
的前缀只影响可显示的字符,而不影响大小。同时,他们认为这是最佳选择,因为unsigned INT
的范围是0到4294967295,足够应对大部分情况。另外,还某些情况下这种方法更高效。
为了进一步了解这个问题,有人在Stack Overflow上提出了类似的问题,并寻求解答。问题的提出者在问题描述中提到了INT(11) UNSIGNED ZEROFILL NOT NULL
作为唯一键的选择,并询问这是否是最佳选择。他们还在问题中指向了一个相关的链接。
通过这个讨论和问题的提出,我们可以得出结论,对于MySQL中的唯一键或索引,使用INT(11) UNSIGNED ZEROFILL NOT NULL
作为数据类型是一个不错的选择。这个数据类型足够容纳大部分情况下的数据,并且在存储和查询方面都比较高效。