想象一下,我们在MySQL数据库中有三个表:
帖子和类别之间存在一对多的关系,因此单个帖子可能有许多类别.
所述category_post表之间的枢转表的类别和职位和具有以下的列:
我们还想象一下,我们的category_post表中有1,000,000行.
我的问题是:
在category_post表中使用id列是否有任何性能优势,还是只占用额外的空间?
帖子和类别可能是多对多的,而不是一对多的.
多对多关系表最好像这样做
CREATE TABLE a_b (
a_id ... NOT NULL,
b_id ... NOT NULL,
PRIMARY KEY (a_id, b_id),
INDEX(b_id, a_id) -- include this if you need to go both directions
) ENGINE = InnoDB;
Run Code Online (Sandbox Code Playgroud)
这样,您可以自动获得两个方向的"群集"查找,并避免表格中不必要的人工ID.
(顺便说一句,NB,一个隐含的PK是6个字节,而不是8. Jeremy Cole在这个主题上有一篇很长的帖子.)
一对多关系不需要这个额外的表.相反,在另一个表中有一个id.例如,City表将包含Country中的ID.
| 归档时间: |
|
| 查看次数: |
2843 次 |
| 最近记录: |