用户ID与MySQL中的用户名性能

时间:2011-07-13 02:39:44

标签: mysql performance

最好存储整数UserID或将用户名存储为密钥。

哪种表现更好?

5 个答案:

答案 0 :(得分:3)

问题似乎更像是讨论,因为它实际上是基于应用程序要求。但是,我将给出一个一般性的答案,为什么UserID更适合性能。

我为UserID提高性能的3个原因:

  1. 可以自动增加,减少一次数据库访问以检查用户名是否正在使用。
  2. 允许用户更改用户名
  3. 无符号INT数据类型最多只需要 4个字节,最多允许 4294967295唯一ID
  4. 我不使用用户名的3个理由:

    1. 使用UTF-8字符集进行存储时,每个字符需要 3个字节,或者每个字符需要 1个字节,例如latin1
    2. 为了获得最大的查找速度,您必须使用具有固定宽度表的MyISAM表。 MyISAM上的固定宽度表格使您的查找速度<动态表格增加<30%。
    3. MyISAM执行表级锁定,如果表格很重write,可能会导致性能降低

答案 1 :(得分:1)

只要两个字段都是主键,性能就会相同。

答案 2 :(得分:1)

性能将相同,但我会将UserID用作自动递增的主键。

答案 3 :(得分:0)

这取决于你想要实现的目标。理想情况下,大多数网站都有UserId和Username,这两者都是唯一的。 当您分配UserID时,您可以自动增加它,并确保表中的每个新条目都获得唯一的用户ID,并为您完成工作。 但是,我假设您不打算让用户使用userID作为访问您的网站的手段,因为这只是糟糕的设计。

答案 4 :(得分:0)

从长远来看,用户名将比自动递增的Id整数更复杂。 您可能没有注意到MySql所做比较的性能差异很大,但您的域代码可能会因为能够比较ID号而不是包含用户名的字符串而受益。

如果您希望能够通过具有相似性能的用户名获取数据,而不是将用户名作为主键,请查看MySQL的索引

Here is a good article on indexing.