1
我已经阅读了大量的答案,但还没有找到解释。我想知道如何在特定的表上正确设置索引。MySQL:复合主键,关系表的唯一简单索引
我有其他两个表之间的连接关系表,也包含在它的一些数据:
我想知道如何在此基础上指出正确设置指标:
id
列是必需的(因为我使用Lara vel框架,需要id
主键)。room_id
,channel_id
和date
需要是唯一的,因为3一起表示行。room_id
和channel_id
是外键。date
列必须被索引为其常用搜索列。
我想出了这一点,但我敢肯定它的冗余和错误:
- 复合主键:
id
,room_id
,channel_id
。 - 复合独特索引:
room_id
,channel_id
,date
。 - 指数:
room_id
- 指数:
channel_id
- 指数:
date
其他问题:是否date
需要是复合主键的一部分?
想知道如何正确设置主键,索引和唯一标识。
有趣的,所以第一个独特的价值表现不同的是,随后的呢?关于保持PK小,我可以把这作为一般的经验法则吗?这意味着如果存在一个id PK存在的类似关系表,最好将外键仅保留为索引? – Jonathan
对于第一个问题,请看看[多列索引(http://dev.mysql.com/doc/refman/5.7/en/multiple-column-indexes.html):“MySQL的可以使用多重用于测试索引中所有列的查询的列索引,或测试**仅第一列**,..“的查询。对第二个问题:不 - 我不会把它作为一般规则。但在你的情况和大多数情况下,如果定义了自动增量coulmn,AI列应该是PK。没有 - 没有必要将FK放入PK中,只是因为它是FK。 –