我正在构建一个包含许多相关表的MySQL数据库。我知道我可以创建唯一的自动增量主键,然后在相关表中将主键作为外键引用。我的问题是什么是主/外键数据类型(int,varchar等)的最佳实践。我想确保第一次就做对了。
谢谢
答案 0 :(得分:13)
在MySQL中,最常用的数据类型是INT UNSIGNED。它长4个字节,可以存储高达40亿的数字,这对于大多数应用来说已经足够了。从您的应用程序开始,使用BIGINT(8B - 18446744073709551615范围)通常是一种过度杀伤。在您的数据库对于INT主键太大之前,您需要聘请专业的DBA来帮助您解决其他问题。
当使用GUID类型主键时,可以使用CHAR或BINARY数据类型 - 这样的键可以更容易地跨多个数据库实例分片数据,但是使用MySQL时,更常见的是多主复制。
当使用InnoDB表时,最好记住,PK将隐式地是在特定表上创建的所有其他索引中的最后一列。这使得为PK使用相当短的数据类型很重要(同样4B INT通常可以很好地完成它的工作)。