Спецификация XHTML 1 говорит:
РЎ.3. Минимизация элемента и Пустое Содержание Элемента
Приведенный пустой пример элемента, модель содержания которого не
EMPTY
(например, пустой заголовок или абзац) не используют минимизированную форму (например, использованиеи не
).
XHTML DTD определяет элементы сценария как:
nvarchar (max)
действительно отличается от типа данных nvarchar (integer-length)
. Его характеристики больше похожи на устаревший тип данных text
.
Если значение nvarchar (max)
становится слишком большим, например text
, оно будет сохранено вне строки (строка ограничена максимумом 8000 байтов. ), а указатель на него хранится в самой строке. Невозможно эффективно проиндексировать такое большое поле, а тот факт, что данные могут храниться где-то еще, еще больше усложняет поиск и сканирование индекса.
Ограничение уникальности требует принудительного применения индекса, и в результате разработчики SQL Server решили запретить создание для него уникального ограничения.
Уникальное ограничение на самом деле является индексом, и nvarchar (max) не может использоваться в качестве ключа в индексе.
Потому что MAX действительно большой (2 31 -1 байт) и может привести к сбою сервера, если ему придется проверять уникальность записей размером в несколько мегабайт. .
Из документации по Create Index , я предполагаю, что это верно и для уникальных ограничений.
Максимально допустимый размер объединенные значения индекса составляют 900 байт.
РЕДАКТИРОВАТЬ : Если вам действительно нужна уникальность, вы можете потенциально приблизить ее, вычислив хэш данных и сохранив его в уникальном индексе. Даже большой хэш будет достаточно маленьким, чтобы поместиться в индексируемый столбец. Вам нужно будет выяснить, как обрабатывать коллизии - возможно, вручную проверить коллизии и дополнить данные (изменяя хэш), если обнаружена ошибочная коллизия.