Axapta 使用RecId以外的任何内容作为聚集索引的原因

Axapta 使用RecId以外的任何内容作为聚集索引的原因,axapta,dynamics-ax-2012,Axapta,Dynamics Ax 2012,是否有任何理由使用RecId以外的索引(AX2012中的代理索引)作为聚集索引? 由快速谷歌搜索(*)确认,当决定聚集索引时,至少应该考虑4个准则: 索引必须是唯一的 索引必须很窄(尽可能少的字段-因为这些字段将被复制到每个其他索引) 索引必须是静态的(因为更新索引字段值将导致SQL server将记录物理移动到新位置) 索引必须按顺序排列(升序/降序) RecId以一种比您自己创建的任何索引更好的方式遵守上述所有内容。您自己创建的任何索引都将至少违反第二个和/或第四个索引,因为它将自动包含Da

是否有任何理由使用RecId以外的索引(AX2012中的代理索引)作为聚集索引?

由快速谷歌搜索(*)确认,当决定聚集索引时,至少应该考虑4个准则:

  • 索引必须是唯一的
  • 索引必须很窄(尽可能少的字段-因为这些字段将被复制到每个其他索引)
  • 索引必须是静态的(因为更新索引字段值将导致SQL server将记录物理移动到新位置)
  • 索引必须按顺序排列(升序/降序)
  • RecId以一种比您自己创建的任何索引更好的方式遵守上述所有内容。您自己创建的任何索引都将至少违反第二个和/或第四个索引,因为它将自动包含DataAreaId

    我的想法…

    是否设置此选项只是AX3.0或更低版本中的一个遗留属性,现在可能不推荐使用它


    *而

    虽然RecId是一个不错的选择,但您可以在全局表(SaveDataPerCompany=No)的int上设置一个较短的键

    访问模式很重要,如果您经常通过帐号访问客户,那么您最好按该顺序存储记录

    此外,如果您只有一个索引(通常是组和参数表的情况),那么您不会因为拥有较长的键而受到惩罚,它无论如何都需要存储在某个地方

    另见