MySQL中的UserID与Username性能
存储整数UserID还是将Username存储为密钥更好MySQL中的UserID与Username性能,mysql,performance,Mysql,Performance,存储整数UserID还是将Username存储为密钥更好 哪个对性能更好?只要两个字段都是主键,性能就会相同。只要两个字段都是主键,性能就会相同。性能会相同,但我会使用UserID作为自动递增的主键。性能会相同,但我会使用UserID作为一个自动递增的主键。这取决于您试图实现的目标。理想情况下,大多数网站都有UserId和Username,这两者都是唯一的。 当您分配UserID时,您可以自动递增它,从而确保表中的每个新条目都获得一个唯一的UserID,并且它为您完成任务。 然而,我假设您不打算
哪个对性能更好?只要两个字段都是主键,性能就会相同。只要两个字段都是主键,性能就会相同。性能会相同,但我会使用UserID作为自动递增的主键。性能会相同,但我会使用UserID作为一个自动递增的主键。这取决于您试图实现的目标。理想情况下,大多数网站都有UserId和Username,这两者都是唯一的。 当您分配UserID时,您可以自动递增它,从而确保表中的每个新条目都获得一个唯一的UserID,并且它为您完成任务。
然而,我假设您不打算让用户使用userID作为访问您的网站的手段,因为这将是一个糟糕的设计 这取决于你想要达到的目标。理想情况下,大多数网站都有UserId和Username,这两者都是唯一的。 当您分配UserID时,您可以自动递增它,从而确保表中的每个新条目都获得一个唯一的UserID,并且它为您完成任务。
然而,我假设您不打算让用户使用userID作为访问您的网站的手段,因为这将是一个糟糕的设计 这些问题看起来更像是讨论,因为它实际上是基于应用程序需求的。然而,我将给出一个一般性的答案,为什么UserID对性能更好 我的三个理由说明了为什么UserID性能更好:
INT
数据类型最多只需要4个字节,最多允许4294967295个唯一IDlatin1
MyISAM
表格。与动态表相比,MyISAM
上的固定宽度表使查找速度提高了30%MyISAM
执行表级锁定,如果表是重写操作,则会导致性能降低
这些问题看起来更像是讨论,因为它实际上是基于应用程序需求的。然而,我将给出一个一般性的答案,为什么UserID对性能更好 我的三个理由说明了为什么UserID性能更好:
INT
数据类型最多只需要4个字节,最多允许4294967295个唯一IDlatin1
MyISAM
表格。与动态表相比,MyISAM
上的固定宽度表使查找速度提高了30%MyISAM
执行表级锁定,如果表是重写操作,则会导致性能降低
从长远来看,用户名将比自动递增的Id整数更复杂。 您可能并没有注意到MySql在性能上的差异,但您的域代码可能会受益于能够比较ID号而不是包含用户名的字符串 如果您希望能够通过用户名获取性能相当的数据,而不是将用户名作为主键,那么可以看看MySQL的索引
从长远来看,用户名将比自动递增的Id整数更复杂。 您可能并没有注意到MySql在性能上的差异,但您的域代码可能会受益于能够比较ID号而不是包含用户名的字符串 如果您希望能够通过用户名获取性能相当的数据,而不是将用户名作为主键,那么可以看看MySQL的索引
如果它被大量用作外来语,那么哪一种做法更好keys@atombie如果你打算把它作为外键使用,那么我肯定会推荐使用userID使关系更清晰。如果它经常作为外键使用,这是一个更好的做法keys@atombie如果你打算用它作为外键,那么我会绝对推荐使用userID可以使关系更清晰。MyISAM表不支持事务,通常值得避免。MyISAM表不支持事务,通常值得避免。