Ответ 1
Строго говоря, типы MAX
всегда будут немного медленнее, чем типы без MAX, см. Сравнение производительности varchar (max) vs varchar ( N). Но эта разница никогда не видна на практике, где она просто становится шумом в общей производительности, обусловленной IO.
Ваша главная проблема не должна заключаться в выполнении MAX или non-MAX. Вы должны быть обеспокоены вопросом, возможно, что в этом столбце будет храниться более 8000 байтов? Если ответ "да", даже если это очень маловероятное "да", тогда ответ очевиден: используйте тип MAX, боль, чтобы преобразовать этот столбец позже в тип MAX, не стоит незначительного преимущества в производительности типов без MAX.
Другие проблемы (возможность индексирования этого столбца, недоступность индексированных операций ONLINE для таблиц с столбцами MAX) уже были решены ответом Дениса.
Кстати, информация о столбцах более 4 КБ, имеющих оставшиеся данные в области переполнения, неверна. Правильная информация находится в Table and Index Organization:
Блок распределения ROW_OVERFLOW_DATA
Для каждого раздела, используемого таблицей (таблица с кучей или кластеризация), индекс или индексированный вид, есть один ROW_OVERFLOW_DATA. Эта единица выделения содержит нуль (0) страниц до строки данных с переменной (varchar, nvarchar, varbinary или sql_variant) в Единица выделения IN_ROW_DATA превышает ограничение размера строки в 8 КБ. Когда размер ограничение достигнуто, SQL Server перемещает столбец с наибольшим ширину от этой строки до страницы в ROW_OVERFLOW_DATA. 24-байтовый указатель на данные вне строки сохраняется на исходной странице.
Итак, это не столбцы более 4 КБ, это строки, которые не помещаются в свободное пространство на странице, и не являются "остальными", это весь столбец.