发票项目表的群集索引

时间:2014-10-27 22:58:03

标签: sql

我看了 Clustered Index Design Guidelines 并试图关注The Clustered Index Debate Continues…,但实际上并不了解它。

但这必须是一个常见的例子: 我有一个Invoice表,其中InvoiceId为主键 - Clusterand。

我有InvoiceItems表,其中InvoiceItemId为主键,InvoiceId为foriegn键

在我看来,我想在items表中将InvoiceId作为集群索引。我的思考过程是:

  • 99%的查询将用于整个发票,而不是InvoiceItemId。 InvoiceItemId更像是一种内部机制,用于跟踪每个项目。
  • 虽然不是唯一的,但它接近于唯一
  • 它将用于远程查询

这是正确的设计决定为什么或为什么不呢?

1 个答案:

答案 0 :(得分:3)

your first link中的答案非常明确。

  

考虑对执行以下操作的查询使用聚簇索引

     
      
  • 使用BETWEEN,>,> =,<和< =。
  • 等运算符返回一系列值。   
  • [...]
  •   
  • 使用JOIN条款;通常这些是外键列。
  •