Я провел небольшой эксперимент, используя следующий код, чтобы создать 2 таблицы и заполнить его одинаково случайными 128 символами:
CREATE TABLE dbo.MyTextFix (
[val] NVARCHAR(128) NOT NULL
)
CREATE TABLE dbo.MyTextMax (
[val] NVARCHAR(MAX) NOT NULL
)
SET NOCOUNT ON;
DECLARE @COUNT INT = 0
WHILE (@COUNT <= 100000)
BEGIN
DECLARE @VAL NVARCHAR(128) = CAST(NEWID() AS NVARCHAR(128)) + '-' + CAST(NEWID() AS NVARCHAR(128)) + '-' + CAST(NEWID() AS NVARCHAR(128)) + '-' + CAST(NEWID() AS NVARCHAR(128))
INSERT INTO dbo.MyTextFix ([val]) VALUES (@VAL)
INSERT INTO dbo.MyTextMax ([val]) VALUES (@VAL)
SET @COUNT = @COUNT + 1
END
А теперь - мы будем использовать «Использование диска по таблицам», чтобы проверьте фактический размер таблиц:
![enter image description here](https://i.stack.imgur.com/Z0ROC.png)
Как видите, хотя одна таблица имеет NVARCHAR(128)
, а другая - NVARCHAR(MAX)
типы данных - если мы заполняем только 128 символов - обе таблицы имеют одинаковый размер.