MySQL唯一键/索引使用什么数据类型

MySQL唯一键/索引使用什么数据类型,mysql,sql,primary-key,Mysql,Sql,Primary Key,在MySQL中使用INT作为索引的数据类型可以吗。我不确定这是否是最好的方法,因为我完全希望这个表会得到很多最终会“溢出”INT的条目 我怀疑Facebook在诸如wallpost表或其他高流量/获取大量条目的内容上使用INT作为索引 有什么想法吗?使用INT(11)无符号零填充不为空使用INT(11)无符号零填充不为空一个整数可以达到20多亿(如果无符号的话是这个数字的两倍)。如果您希望表中的行数多于此数,则可以使用BIGINT(未签名的行数可能会增加到18446744073709551615

在MySQL中使用INT作为索引的数据类型可以吗。我不确定这是否是最好的方法,因为我完全希望这个表会得到很多最终会“溢出”INT的条目

我怀疑Facebook在诸如wallpost表或其他高流量/获取大量条目的内容上使用INT作为索引


有什么想法吗?

使用
INT(11)无符号零填充不为空
使用
INT(11)无符号零填充不为空
一个整数可以达到20多亿(如果无符号的话是这个数字的两倍)。如果您希望表中的行数多于此数,则可以使用BIGINT(未签名的行数可能会增加到18446744073709551615,甚至可能超过Facebook的需要)。

一个INT可以增加到20多亿行(未签名的行数会增加一倍)。如果您希望表中的行数多于此数,则可以使用BIGINT(未签名的行数高达18446744073709551615,甚至可能超过Facebook的需要)。

一般来说,您有两种选择:

反映您正在处理的数据的真实性的“”。 例如,电话号码可能是呼叫列表的有效主键,但它根本不适合(比如)医疗保健受益人列表,因为许多人可能在家里共用同一电话号码。请注意,自然密钥可能由多个字段组成。例如,Make、Model和Year的组合可能是汽车型号列表的关键

另一方面,“”只是您分配给行的任意值。如果您采用这种方式,我建议您使用(MySql中的UUID)。用char(36)列来表示MySQL中的内容。guid实际上永远是唯一的,可以无限地使用

如果你坚持使用一个普通的旧数字,那么INT可能是好的,或者你可以用它来确定

BIGINT UNSIGNED ZEROFILL

一般来说,您有两种选择:

反映您正在处理的数据的真实性的“”。 例如,电话号码可能是呼叫列表的有效主键,但它根本不适合(比如)医疗保健受益人列表,因为许多人可能在家里共用同一电话号码。请注意,自然密钥可能由多个字段组成。例如,Make、Model和Year的组合可能是汽车型号列表的关键

另一方面,“”只是您分配给行的任意值。如果您采用这种方式,我建议您使用(MySql中的UUID)。用char(36)列来表示MySQL中的内容。guid实际上永远是唯一的,可以无限地使用

如果你坚持使用一个普通的旧数字,那么INT可能是好的,或者你可以用它来确定

BIGINT UNSIGNED ZEROFILL

索引加速了数据检索;我想你的意思是说“主键”,索引可以加速数据检索;我想你的意思是说“主键”。INT上的前缀只影响可显示字符,而不影响大小。为什么这是最好的选择?这仍然只是一个有限的数字。@john将有多少行????
无符号整数的范围是0到4294967295。。。。这还不够吗?说得好。我不认为我在这个表格中会有超过40亿个条目。同样但更有效的方法是INT上的前缀只影响可显示字符,而不影响大小。为什么这是最好的选择?这仍然只是一个有限的数字。@john将有多少行????
无符号整数的范围是0到4294967295。。。。这还不够吗?说得好。我不认为我在这个表格中会有超过40亿个条目,这是同样但更有效的方式