sil*_*min 4 mysql database-design primary-key
我'projects'表中的每个条目都有一个唯一的32个字符的哈希标识符,使用来存储varchar(32)。
将其用作该方法primary key是否会被视为不好的做法?主键有建议的大小和数据类型吗?
我会说是的,对主键使用如此大的列是一个坏主意。原因是您在该表上创建的每个索引将在其中包含32个字符的列,这将膨胀所有索引的大小。索引越大,意味着更多的磁盘空间,内存和I / O。
如果可能的话,最好使用自动递增的整数键,并在哈希标识符列上创建唯一索引。
如何定义主键取决于您的使用情况。我通常使用 INT(11) 作为主键。它使外键变得非常容易。
我刚刚看到你的编辑。我个人会使用带有自动增量的 int(11) 。根据您的设置,这将允许您非常轻松地拥有具有外键限制的其他表。您可以使用 varchar 做同样的事情,但我一直认为 int 比 varchar 更快,尤其是对于索引。