Имея поле массива строк в качестве индекса, хорошо это или плохо? - PullRequest
0 голосов
/ 11 апреля 2011

Мне кажется, что установка поля строки (с элементами массива) в качестве индекса таблицы будет ухудшать производительность (когда основная часть операций, выполняемых над таблицей, - это вставки и обновления - таблица содержит транзакционные данные иее текущий размер составляет приблизительно 20 миллионов записей).

Строка расширяет тип четырьмя элементами массива, где все они не всегда заполнены.Мне нужно обосновать, почему бы не установить это поле в качестве одного из индексов.Я пытался искать ответы, читал блог Кимберли Триппса, просматривал лучшие практики по индексам на MSDN (в которых упоминаются только индексы, лучше всего сначала числовые, затем строковые поля) и т. Д. Но ни в одном из них не упоминается индексация таблицы по полюэто тип массива.Какие причины я могу привести, чтобы не индексировать поле строкового массива.И если мое внутреннее чувство совершенно неверно и индексы хорошо работают с полями массива, почему так?

Ответы [ 3 ]

0 голосов
/ 11 апреля 2011

Допустим, у вас расширенный тип данных ArrElement с 3 дополнительными элементами массива ArrElement2, ArrElement3, ArrElement4.Создание индекса с полем типа ArrElement в AX будет эффективно создавать индекс с 4 полями (ArrElement, ArrElement2, ArrElement3 и ArrElement4 - в этом порядке) в SQL Server.Вы не можете изменить порядок элементов массива в индексе, но, на мой взгляд, нет ничего плохого в том, чтобы иметь такой индекс, если он действительно служит вашим целям.Надеюсь, что это отвечает на ваш вопрос.

0 голосов
/ 28 июля 2011

Как отметил @ 10p, добавив, скажем, Dimension в качестве единственного поля, будет создан индекс всех элементов массива: Dimension, Dimension2_, Dimension3_ (которые являются именами полей таблицы SQL).

Значение такого индекса будет зависеть от выполненных запросов. Если запрашивается только Dimension[3], то индекс не имеет значения, поскольку Dimension[1] и Dimension[2] неизвестны.

Эту проблему можно решить, создав индекс для каждого элемента массива, например:

  • Dim1Idx: Размер [1] (возможно, добавить дополнительные поля)
  • Dim2Idx: Размер [2] (возможно, добавить дополнительные поля)
  • Dim3Idx: Размер [3] (возможно, добавить дополнительные поля)

Отдельные элементы массива можно выбрать с помощью поля со списком в поле индекса.

Значение таких индексов должно быть взвешено против добавленной стоимости вставки (и обновления, если значения массива изменены).

0 голосов
/ 11 апреля 2011

Поле Memo или Container не может быть частью индекса в AX.

Кроме того, столбцы, состоящие из типов данных ntext, text или image , не могут быть указаны как столбцы дляиндекс в SQL Server.

...