将RecId以外的任何内容用作聚簇索引的原因

时间:2014-09-30 08:15:59

标签: axapta dynamics-ax-2012

有没有理由使用RecId以外的索引(AX2012中的SurrogateKey)作为聚集索引?

通过快速Google搜索(*)确认,在决定聚集索引时应考虑至少4个条件:

  1. 索引必须是唯一的。
  2. 索引必须缩小(尽可能少的字段 - 因为这些字段将被复制到其他每个索引)。
  3. 索引必须是静态的(因为更新索引字段值会导致SQL Server将记录物理移动到新位置)
  4. 必须订购索引(升序/降序)。
  5. RecId坚持以上所有方式,比您自己创建的任何索引更好。您自己创建的任何索引都将至少违反第2和/或第4,因为它会自动包含DataAreaId。

    我的想法......

    设置它的选项可能只是AX3.0或更低版本的遗留属性,现在可以弃用它吗?

    * TechNet SQL Server Index Design GuideEffective Clustered Indexes

1 个答案:

答案 0 :(得分:3)

虽然RecId是一个不错的选择,但可以在全局表上设置一个更短的密钥(SaveDataPerCompany = No)。

访问模式很重要,如果您经常通过帐号访问您的客户,您也可以按顺序存储记录。

此外,如果您只有一个索引(通常是组和参数表的情况),您不会因为有更长的密钥而受到惩罚,无论如何都需要存储在某处。

另见What do Clustered and Non clustered index actually mean?