哪一个最适合作为db中的主键?Varchar或数字


which one is best for using as a primary key in db?varchar or number.

在我的项目中,我使用mysql数据库。在这里,我已经创建了包含字段(email,username,.....等)的表。

在这个表中,我将email作为主键。这种方法是使用主键的好方法,或者我必须创建数字作为主键,如user_id(自动递增)。哪一种方式是正确的,并提供良好的性能与其他表在同一数据库。

当使用InnoDB引擎时,主键(PK)的大小很重要。

PK中字段的大小将影响任何二级索引的大小,因为它将与索引的列一起存储。选择错误的数据类型将导致索引膨胀和磁盘使用量增加。这也意味着每个索引

将使用更多的缓冲池。

如果您需要引用另一个表中的行,那么这将意味着进一步增加内存和磁盘使用,因为您需要将PK存储在多个位置。电子邮件地址当然是一个例子,如果用作PK,将浪费空间,因为BIGINT将是8字节,而VARCHAR的大小要大得多

Varchar比较比int比较慢。但是,如果您只是使用电子邮件地址从数据库检索用户,则这无关紧要。如果您有多个连接的复杂查询,这很重要。

如果在多个表中存储有关用户的信息,则users表的外键将是电子邮件地址。这意味着您需要多次存储该电子邮件地址。