首页 文章

在具有两个外键条件的两列表上分配聚簇索引

提问于
浏览
0

我有一个包含两列的表,这两列都是int数据类型而不是null .

列A是主键,并作为多对一关系引用为另一个表中的外键 .

B列是一个外键,它引用另一个具有多对一关系的表 .

用户永远不会直接查询列A,它只会用作连接 . 查询通常使用列B,特别是在where子句中 .

聚集索引的最佳选择是什么?在一个更大的表中,我可能会使主键非聚集并在B列上放置聚簇索引,这会不同于更少的列?

该表将每月更新一个相对较小的数据集 .

2 回答

  • 0

    由于列A是其他表引用的主键,我假设它不会经常更改(可能它赢得了't be changed at all). Also considering that it'是一个int列,它可能是聚簇索引的一个很好的选择 . 参见http://www.sqlskills.com/blogs/kimberly/ever-increasing-clustering-key-the-clustered-index-debate-again/

    我还会在B列上创建一个非聚集索引,特别是如果它具有高基数 . 但即使基数是中等的,索引在B列上仍然有用,以便在有人试图从引用的表中删除某些内容时更快地检查FK .

  • 0

    你没有告诉我们关于哪些列真正决定使用哪一列 . 聚簇索引列的最佳选择是占用空间最少的列,尽可能唯一(SQL Server将在必要时使它们唯一)并且非常重要,以避免页面拆分,正在增加 .

相关问题