Временное решение Максимальная длина ключа для некластеризованного индекса в SQL Server - PullRequest
0 голосов
/ 08 июля 2019

Есть ли способ увеличить ограничение для некластеризованного индекса, который составляет 1700 байт в SQL Server?Когда я строю свою базу данных, я получаю это предупреждение:

Внимание!Максимальная длина ключа для некластеризованного индекса составляет 1700 байт.Индекс CS_UK имеет максимальную длину 8000 байтов.Для некоторой комбинации больших значений операция вставки / обновления завершится неудачей.

Или мне нужно изменить структуру моих индексов?

Ответы [ 2 ]

1 голос
/ 08 июля 2019

Даже если бы это было возможно, вам следует подумать об изменении структуры вашего индекса.При этом из в блоге команды разработчиков :

SQL Server 2016 и база данных SQL Azure увеличен максимальный размер для ключей индекса с некластеризованными индексами.Новый максимальный размер ключа для некластеризованных индексов составляет 1700 байт.Максимальный размер ключа для кластеризованных индексов остается 900 байт.

В конце статьи они добавляют:

Для таблиц, оптимизированных для памяти: максимальный размер ключа индекса длянекластеризованные индексы - 2500 байт;не существует строгого ограничения на размер ключа индекса для хеш-индексов.

Так что это возможно.

0 голосов
/ 18 июля 2019

Обходной путь должен использовать include для столбцов, которые слишком велики при создании индекса.

CREATE NONCLUSTERED INDEX IX_IndexSizeTest_Test3 
ON IndexSizeTest (EMPName,EmpPhoneNumber,EmpPostCode) INCLUDE (EmpAddress) 

Когда EmpAdress в этом примере будет очень большим столбцом, мы можем добавить его в индекс с помощью INCLUDE(EmpAddress), потому что тогда он не будет учитываться при ограничении индекса. Здесь более подробно об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...