2014-10-27 50 views
1

我读 Clustered Index Design Guidelines 并试图按照The Clustered Index Debate Continues…,但真的不明白它。发票项目表集群索引表

但这必须是一个常见的例子: 我有一个InvoiceId作为主键 - Clusterand InvoiceId。

我InvoiceItems表InvoiceItemId作为主键和InvoiceId为foriegn关键

在我看来,我会想在项目表InvoiceId簇索引。我的思考过程是:

  • 99%的查询将用于整个发票而不是InvoiceItemId。 InvoiceItemId更多地是用于跟踪每个项目的内部机制。
  • 虽然不是唯一的它靠近独特
  • 将在远程查询

使用这是正确的设计决策,为什么或者为什么不呢?

+2

板凳标志您所查询的工作量 – 2014-10-27 23:03:35

+0

怎么会这样?有没有一个工具呢?当前数据库有3439个SP,其中30-50%是与发票相关的。 – Mike 2014-10-28 12:23:25

回答

3

答案在your first link中拼写得很好。

考虑使用聚簇索引为做查询以下

  • 返回通过使用运算符,例如之间的值的范围,>,> =,<,和< =。
  • [...]
  • 使用JOIN子句;通常这些是外键列。