AX2009中如何判断相等索引的recid加法

How to determine recid addition on equal indexes in AX2009

我正在尝试了解 Dynamics AX 如何以及何时将 RE​​CID 添加到索引。我已经通过阅读 "Inside AX 2009".

这本书找到了一些方法

如果定义的索引中 none 是唯一的,它会向一个索引添加一个 RECID。它通过估计每个索引的平均密钥长度来实现这一点,如 Microsoft 网站部分所述:系统索引。

现在我尝试的是查看索引中的字段并向每个字段添加一定数量的字节。 AX 中的整数是 SQL 中的整数,因此该字段将为 4 个字节,AX 中的 int64 将是 SQL 中的 bigint,因此为 8 个字节,等等。对于我添加的索引中的每个字段这样一来,我得到了总字节数,数量最少的将是获得 RECID 字段的字节。

到目前为止,这每次都有效,但是当一个 table 上的两个索引具有相同的索引时,问题就会出现,这意味着两个索引都有,例如一个整数类型的字段。

如果两者具有相同的字节数,我已经尝试过,但没有结果:

针对问题:你为什么想知道这个 我所在的客户没有让AX同步数据库,我建议他们这样做,因为AX是主控。他们同意了,因此我正在制作一份报告,显示哪些 table 与数据库不匹配。该报告工作正常,除了 recid thingy。

所以我问这个问题,如果有人知道如何确定"the estimation of the average key length of an index"。

有关索引的信息可以在 Microsoft 的网站上找到:

https://msdn.microsoft.com/en-us/library/bb278358(v=ax.50).aspx

这里声明如下:

If there are indexes on a table but none of them are unique, the runtime estimates the average key length of the existing indexes, chooses the index with the smallest key length and appends the RecId column to create a unique index.

这可以通过将索引字段映射到问题中所述的字节来确定。

但是如果两个索引的估计平均密钥长度相等,AX 会将 RECID 字段添加到 AOT 中具有最低索引 ID 的索引。