gpt4 book ai didi

MySQL:复合主键,关系表的唯一索引和简单索引

转载 作者:行者123 更新时间:2023-11-28 23:41:48 25 4
gpt4 key购买 nike

我已经阅读了大量的答案,但还没有找到解释。我想知道如何在特定表上正确设置索引。

我有一个连接其他两个表的关系表,其中还包含一些数据:

Allocation table

enter image description here

我想知道如何根据这几点正确设置索引:

  • id 列是必需的(因为我使用的 Laravel 框架需要 id 主键)。

  • room_idchannel_iddate 需要唯一,因为这 3 个一起代表行。

    <
  • room_idchannel_id 是外键。

  • date 列必须作为其常用搜索列编入索引。

我想出了这个,但我很确定它是多余的和错误的:

  • 复合主键:idroom_idchannel_id
  • 复合唯一索引:room_idchannel_iddate
  • 索引:room_id
  • 索引:channel_id
  • 索引:日期

附加问题:date 是否需要成为复合主键的一部分?

想知道如何正确设置主键、索引和唯一值。

最佳答案

为了满足您的要求,我会这样做:

  • 主键:id
  • 索引:room_id
  • 索引:channel_id
  • 唯一索引:日期room_idchannel_id

解释:

  1. id是自增的,PK就够了。
  2. room_idchannel_id 如果 id 在第一位,则 PK 中没有用。
  3. 每个索引都包含 PK。所以PK应该越小越好。
  4. 如果唯一索引以date 开头,您可以将其用于日期搜索。因此不需要单独的 date 索引。

关于MySQL:复合主键,关系表的唯一索引和简单索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34238991/

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