将字符串数组字段作为索引,好还是坏?

时间:2011-04-11 07:07:55

标签: dynamics-ax-2009 axapta ax

我的直觉是,将一个字符串(带有数组元素)字段设置为表上的索引将不利于性能(在表上执行的大部分操作是插入和更新 - 该表包含事务数据和它目前的大小约为20密耳记录。)

字符串扩展了一个包含4个数组元素的类型,其中并不总是填充它们。我需要证明为什么不将此字段设置为索引之一。我已经尝试寻找答案,阅读金伯利Tripps博客,在MSDN上进行最佳实践重新索引(其中只提到索引最好是数字,然后是字符串字段),等等。但是没有一个提到索引表上的字段这是一种数组类型。我可以给出什么理由来证明不对字符串数组字段进行索引。如果我的直觉完全错误并且索引在阵列字段上运行良好,为什么呢?

3 个答案:

答案 0 :(得分:0)

备注或容器字段不能是AX中索引的一部分。

此外,由ntext,text或 image 数据类型组成的列不能指定为SQL Server中索引的列。

答案 1 :(得分:0)

假设您有一个扩展数据类型ArrElement,其中包含3个额外的数组元素ArrElement2ArrElement3ArrElement4。在AX中使用ArrElement类型的字段创建索引将有效地在SQL Server中创建包含4个字段(ArrElement,ArrElement2,ArrElement3和ArrElement4 - 按此顺序)的索引。你不能改变索引中数组元素的顺序,但在我看来,如果它真的符合你的目的,那么拥有这样一个索引真的没有错。希望能回答你的问题。

答案 2 :(得分:0)

由于@ 10p注意添加说Dimension作为唯一字段,将创建所有数组元素的索引:Dimension,Dimension2_,Dimension3_(这些是SQL表字段的名称)。

此类索引的值取决于执行的查询。如果仅查询Dimension[3],则索引无效,因为Dimension[1]Dimension[2]未知。

这可以通过为每个数组元素创建索引来解决,例如:

  • Dim1Idx:Dimension [1] (可能附加更多字段)
  • Dim2Idx:Dimension [2] (可能附加更多字段)
  • Dim3Idx:Dimension [3] (可能附加更多字段)

可以使用索引字段上的组合框选择单个数组元素。

此类索引的值应根据增加的插入成本进行加权(如果更改了数组值,则更新)。