Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL中的UserID与Username性能_Mysql_Performance - Fatal编程技术网

MySQL中的UserID与Username性能

MySQL中的UserID与Username性能,mysql,performance,Mysql,Performance,存储整数UserID还是将Username存储为密钥更好 哪个对性能更好?只要两个字段都是主键,性能就会相同。只要两个字段都是主键,性能就会相同。性能会相同,但我会使用UserID作为自动递增的主键。性能会相同,但我会使用UserID作为一个自动递增的主键。这取决于您试图实现的目标。理想情况下,大多数网站都有UserId和Username,这两者都是唯一的。 当您分配UserID时,您可以自动递增它,从而确保表中的每个新条目都获得一个唯一的UserID,并且它为您完成任务。 然而,我假设您不打算

存储整数UserID还是将Username存储为密钥更好


哪个对性能更好?

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

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

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

性能会相同,但我会使用UserID作为一个自动递增的主键。

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

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

这些问题看起来更像是讨论,因为它实际上是基于应用程序需求的。然而,我将给出一个一般性的答案,为什么UserID对性能更好

我的三个理由说明了为什么UserID性能更好:

  • 可以自动递增,节省一次数据库检查用户名是否正在使用的行程
  • 允许用户更改用户名
  • 无符号
    INT
    数据类型最多只需要4个字节,最多允许4294967295个唯一ID
  • 我不使用用户名的3个原因:

  • 使用UTF-8字符集进行存储时,每个字符需要3个字节,或者
    latin1
  • 为了获得最大的查找速度,您必须使用带有固定宽度表格的
    MyISAM
    表格。与动态表相比,
    MyISAM
    上的固定宽度表使查找速度提高了30%
  • MyISAM
    执行表级锁定,如果表是重
    写操作,则会导致性能降低

  • 这些问题看起来更像是讨论,因为它实际上是基于应用程序需求的。然而,我将给出一个一般性的答案,为什么UserID对性能更好

    我的三个理由说明了为什么UserID性能更好:

  • 可以自动递增,节省一次数据库检查用户名是否正在使用的行程
  • 允许用户更改用户名
  • 无符号
    INT
    数据类型最多只需要4个字节,最多允许4294967295个唯一ID
  • 我不使用用户名的3个原因:

  • 使用UTF-8字符集进行存储时,每个字符需要3个字节,或者
    latin1
  • 为了获得最大的查找速度,您必须使用带有固定宽度表格的
    MyISAM
    表格。与动态表相比,
    MyISAM
    上的固定宽度表使查找速度提高了30%
  • MyISAM
    执行表级锁定,如果表是重
    写操作,则会导致性能降低

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

    如果您希望能够通过用户名获取性能相当的数据,而不是将用户名作为主键,那么可以看看MySQL的索引


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

    如果您希望能够通过用户名获取性能相当的数据,而不是将用户名作为主键,那么可以看看MySQL的索引


    如果它被大量用作外来语,那么哪一种做法更好keys@atombie如果你打算把它作为外键使用,那么我肯定会推荐使用userID使关系更清晰。如果它经常作为外键使用,这是一个更好的做法keys@atombie如果你打算用它作为外键,那么我会绝对推荐使用userID可以使关系更清晰。MyISAM表不支持事务,通常值得避免。MyISAM表不支持事务,通常值得避免。