gpt4 book ai didi

sql - 主/外键与没有主键的单表的性能

转载 作者:搜寻专家 更新时间:2023-10-30 21:57:35 27 4
gpt4 key购买 nike

如果我有一个可以与多个键相关联的用户,正确的表设置应该是:

  1. 一个表有两列,例如:

    UserName | Key

    没有主键且用户可以有多行,或者:

  2. 具有匹配标识符的两个表

     Table 1     UserName | UserId

    Table 2 Key | UserId

    其中UserId是表1的主键和表2的外键。

如果我想找到与用户关联的所有 key ,哪种方式更可取?

最佳答案

如果您想查找与给定用户关联的所有键,您可以使用以下 JOIN 查询:

SELECT Key
FROM keys k INNER JOIN users u
ON k.UserId = u.UserId
WHERE u.UserName = 'username'

在这种情况下,从索引中获益最多的地方是两个表中的 UserId 列。如果这个索引存在,那么,对于给定的用户,在 Key 表中查找键将需要大致恒定的时间。

如果没有任何索引,MySQL 将不得不对每个用户进行全表扫描,因为它会尝试找到与该用户对应的键。

关于sql - 主/外键与没有主键的单表的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36417582/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com