У меня есть временная переменная с вычисленным столбцом на основе SHA1 hasbyte. Когда я создаю УНИКАЛЬНЫЙ некрупный индекс на вычисленном столбце, он выдает предупреждение:Внимание! Максимальная длина ключа - 900 байт. Индекс имеет максимальную длину 8009 байт.
Внимание! Максимальная длина ключа - 900 байт. Индекс 'UQ __ # B445E45__954B055AC5951B75' имеет максимальную длину 8009 байт. Для некоторой комбинации больших значений операция вставки/обновления завершится с ошибкой.
Я помню, что считывание байт SHA1 ограничивается примерно 160 байтами. Я не могу понять, почему я получил это предупреждение.
Если вы проверяете максимальную длину всех столбцов, участвующих в вычисляемом столбце, в результате запроса ниже, он составляет около 8148 байт. Но я подумал, что с использованием хэша, который я использую, я должен получить не более 160 байт для вычисленного столбца.
SELECT Sum(c.max_length)
FROM SYS.COLUMNS C INNER JOIN SYS.TABLES tb ON tb.[object_id] = C. [object_id]
INNER JOIN SYS.TYPES T ON C.system_type_id = T.user_type_id
WHERE tb.[is_ms_shipped] = 0
and OBJECT_NAME(tb.object_id)='xyz'
Пожалуйста, сообщите, что мне не хватает здесь.
показать нам свою вычисленную колонку? –
@JuanCarlosOropeza Мой вычисленный столбец выглядит следующим образом: CompSum AS HashBytes («SHA1», Col1 + Col2 + Col3 + .. еще 15 столбцов). Все столбцы, включенные в вычисляемый столбец, - varchar (n), где n не более 50 – Ramya
Да, но db этого не знает. Вам нужно включить кастинг, иначе он допустит самый большой 'n' разрешенный –