什么数据类型用于MySQL的唯一键/索引?

20 浏览
0 Comments

什么数据类型用于MySQL的唯一键/索引?

在MySQL中,使用INT作为索引的数据类型可以吗?我不确定这是否是最佳选择,因为我预计这个表将会有很多条目,最终可能会导致INT数据类型溢出。我怀疑像Facebook这样的网站是否会在类似于墙贴表这样的高流量/大量条目的情况下使用INT作为索引。有什么想法吗?

0
0 Comments

MySQL中用于唯一键/索引的数据类型选择问题的出现原因是为了确定在MySQL中使用哪种数据类型来创建唯一键/索引。解决方法如下:

通常情况下,你有两个选择:

一种是反映你正在处理的数据的现实情况的“自然键”。

例如,电话号码可能是一个有效的用于呼叫列表的主键,但对于医疗保险受益人的列表来说,它根本不合适,因为许多人可能在一个家庭中共享同一个电话号码。注意,自然键可以由多个字段组成。例如,制造商、型号和年份的组合可能是汽车型号列表的键。

另一方面,“替代键”只是分配给行的任意值。如果你选择这种方式,我建议使用GUID(在MySQL中为UUID)。在MySQL中表示GUID的最佳方式是使用char(36)列。GUID是永久唯一的,并且可以无限使用。

如果坚持使用普通的数字,那么INT可能是可以的,或者你可以使用BIGINT来确保更加安全。

BIGINT UNSIGNED ZEROFILL

0
0 Comments

问题的出现原因:在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作为数据类型是一个不错的选择。这个数据类型足够容纳大部分情况下的数据,并且在存储和查询方面都比较高效。

0
0 Comments

如果你的表中的行数超过了INT数据类型的最大值(20亿),你可以使用BIGINT数据类型来解决这个问题。BIGINT数据类型的最大值为18446744073709551615。

解决方法:

ALTER TABLE your_table MODIFY column_name BIGINT;

0