我应该使用user_id(主键)还是user_name(唯一索引)从Mysql插入和获取数据

时间:2013-03-11 10:12:54

标签: php mysql performance

我正在开发php mysql中的用户评论系统。实际上,我的第一个偏好是使用user_id(主键)来获取和插入数据到mysql,但在某些地方我需要使用user_name(唯一索引)从mysql获取数据并更新或插入其中。

我想问哪种方法最有效?如果在某些地方,我必须使用user_name才会影响效率?

3 个答案:

答案 0 :(得分:1)

你在user_id和user_name上都有一个索引,所以它们都很快,一般来说(因为你没有给出这两个字段中使用的类型的详细信息)user_id会更快,因为索引大小会逻辑上小于user_name字段 - 但你说的是微小的差异。

我能否认为user_name实际上是他们的登录名而不是他们的真实姓名 - 因为由于碰撞的可能性很高,在真人姓名上有唯一索引会有问题。如果是这种情况,您是否考虑过散列名称,然后将其用作索引?

答案 1 :(得分:0)

您应该使用user_id作为主键,而不是user_name,但是当您尝试根据user_name插入或获取数据时,您必须使用user_id在where子句中,因为我确信当user_id时必须有user_name

答案 2 :(得分:0)

  

我们刚刚注意到我们的生产系统上有一件非常奇怪的事情。一个至关重要的独特关键   链接表替换为主键和&性能大幅提升!

参考:

Here