【发布时间】:2014-09-29 15:40:59
【问题描述】:
我相信这对你们中的许多人来说都很简单,所以我希望你们能轻松地提供帮助。
如果我在“一对多”关系的“多”端有一个 MySQL 表 - 像这样:
Create Table MyTable(
ThisTableId int auto_increment not null,
ForeignKey int not null,
Information text
)
由于该表总是通过使用 ForeignKey 的连接来使用,因此将 ForeignKey 设置为聚集索引似乎很有用,这样外键对于相同的源记录总是被相邻排序。但是,ForeignKey 不是唯一的,所以我认为将其设为聚集索引是不可能或不好的做法?如果我尝试使用 (ForeignKey, ThisTableId) 创建复合主键来实现有用的集群和唯一性,则会出现错误“只能有一个自动列,并且必须将其定义为键”。
我想我可能是在错误地处理这个问题,在这种情况下,索引上表以获得最大速度的最佳方法是什么?
【问题讨论】:
-
我怀疑你过早地过度优化你的数据结构。
ForeignKey上的索引应该没问题。ThisTableId应声明为primary key。