我需要关于一张桌子的建议,这是我参与的开发项目的一部分。表的使用简单总结一下:
来自多个数据库的数据将被合并到此表中,以供全文搜索之用。全文索引将在单个列上。
我正在尝试确定主(和集群)键的最佳候选者。将有两个重要字段:ID 和 Type。ID 是源表上的身份字段(也是主键+聚类键)。仅使用此字段将导致冲突,因为多个源表具有相同的 ID(身份)字段。类型是一个查找表。Id 和 Type 一起是唯一的。
我想出了以下场景:
- Id 和 Type 作为主键+集群键。
- 在目标表(主+集群)上创建一个身份字段以及一个 ID(与源的身份字段同步)和类型。
- 在目标表上创建一个单独的 Id 字段(集群)。主键将是源的 ID 和类型。
这里最好的选择是什么?
首先,我假设 ID 和 Type 都是 INT 列。其次,这将是一个有点活跃的表,有相当数量的插入(可能还有删除)。最后但并非最不重要的一点是,您不会提取 ID 的“范围”。例如,您不需要查看 ID 10000-15000。
如果是这样,我将创建第三列,它是一个 INT 标识列。在其上创建主/簇键。然后在 ID + Type 上创建一个唯一键。通过使新列成为聚集键,您将避免因插入页面中间而导致的任何碎片问题并加快插入速度。唯一键 ID+Type 将用于您的查询,并且足够小(8 字节),您应该不会在那里看到任何问题。
最后但并非最不重要的一点是,由于您试图在表上放置全文索引,因此您将需要一个单列、非空、唯一键,最好是一个整数。新专栏将非常适合该法案。(当然,您的 ID + Type 组合不起作用。)