gpt4 book ai didi

MySQL 表主索引 - 自动编号与两列索引

转载 作者:行者123 更新时间:2023-11-30 00:57:17 25 4
gpt4 key购买 nike

第一次在 StackOverflow 上提问。我正在创建一个 MySQL 数据库,其中有两个表

  • 以company_id为主键的公司表(company_id、company_name等)(最多12个字符)*
  • 另一个表是其公司代表(最多五个),其中包含字段(company_id、person_last_name 等)。代表表没有自然主键。

我将在 company_id 字段上进行 JOIN 查询。一切正常,但我想使用正确的约定并最大限度地提高访问速度。

问题:是否最好向代表表添加一个自动增量整数主键,即使它永远不会被使用(我),或者添加一个 person_count 列并设置一个两列主键索引(company_id,person_count)?

SQL 示例:

SELECT company.company_id, company.company_name, representatives.person_last_name
FROM company INNER JOIN representatives
ON company.company_id = representatives.company_id;

代表表选项1:company_id(非唯一索引),person_last_name,auto_id(自增整数pri)

N123456789012, JONES, 1N123456789012, SMITH, 2N123456789012, JONES, 3N123456789012, WHITE, 4N123456789012, BLACK, 5P1234, WILLIAMS, 6P1234, WILLIAMS, 7

代表表选项2:

[company_id, person_count](pri index), person_last_nameN123456789012, 1, JONESN123456789012, 2, SMITHN123456789012, 3, JONESN123456789012, 4, WHITEN123456789012, 5, BLACKP1234, 1, WILLIAMSP1234, 2, WILLIAMS

我没有创建原始数据,也无法控制作为文本字段的 company_id。

提前致谢

最佳答案

除非您有充分的理由做不同的事情,否则我建议使用自动增量单列 PK。能够通过一个简单的 int 引用每个唯一的行非常方便。您现在可能不会用到它,但将来您可能会用到它。即使您必须对表执行一些手动维护(手动删除或更新某些行),简单的 PK 也会派上用场。

但是,如果您希望数据库强制每个公司 5 人的限制,我还会使用 person_count 列,为其添加约束,使其只能在 1 到 5 之间,并向 (company_id ,人数)。这样,您就能两全其美。

关于MySQL 表主索引 - 自动编号与两列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20446434/

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