В старые времена использование varchar
over char
было большим «нет», так как varchar
он хранился на другой странице, чем остальная часть строки. Так ли это до сих пор в SQL Server 2008? Увижу ли я какой-либо выигрыш в памяти / производительности от замены 1-3 varchar(5)
столбцов на char(5)
столбцы таблицы с
а) скажем 2.000.000 строк б) если какой-либо из varchar
столбцов является частью индексов / первичных ключей
sql-server
sql-server-2008
Карло В. Данго
источник
источник
Ответы:
Вы путаете text / varchar (max) (типы больших объектов) с varchar (n) / char (n)
В противном случае, если вы используете char (1000), а не varchar (1000), а средняя длина данных составляет, скажем, 42, это плохой дизайн и много потерянного пространства.
источник
Трудно сказать вам о конкретных приростах производительности или хитов, не зная больше о вашей схеме, но в целом вы хотите определить тип данных, чтобы соответствовать вашим данным. Если вам нужна фиксированная ширина (например, вы знаете, что у вас всегда будет пять символов), тогда вам следует использовать char (5). Если у вас есть переменное количество данных, вы должны использовать varchar (5).
Для SQL, чем больше данных вы можете разместить на странице, тем выше ваша производительность.
источник
Насколько я знаю, SQL Server никогда не сохранял типы данных varchar или nvarchar вне строки. Текст и NText разные. Есть несколько дополнительных битов, которые хранятся для столбца переменной ширины, но это все.
источник