Размер столбцов varchar

#sql-server #optimization #varchar

Вопрос:

В sql server имеет ли значение, если я определяю столбец varchar длиной 32 или 128?

Комментарии:

1. Вы спрашиваете: имеет ли значение, если длина столбца равна СТЕПЕНИ ДВУХ? (32/64/128/256/и т. Д.) Ответ на ЭТОТ вопрос совсем другой.

Ответ №1:

Varchar-это переменное символьное поле. Это означает, что он может содержать текстовые данные определенной длины. Varchar(32) может содержать только 32 символа, в то время как varchar(128) может содержать 128 символов. Если бы я попытался ввести «12345» в поле varchar(3); это данные, которые будут сохранены:

«123»

«45» будет «усечено» (потеряно).

Они очень полезны в тех случаях, когда вы знаете, что определенное поле будет иметь (или должно иметь) только определенную максимальную длину. Например: почтовый индекс или аббревиатура штата. Фактически, они обычно используются почти для всех типов текстовых данных (таких как имена/адреса/и т. Д.), Но в этих случаях вы должны быть осторожны, чтобы число, которое вы указываете, было разумным максимумом для типа данных, которые заполнят этот столбец.

Однако вы также должны быть осторожны при их использовании, чтобы разрешить пользователю вводить только максимальное количество символов, которое будет поддерживаться полем. В противном случае это может привести к путанице при усечении ввода пользователя.

Комментарии:

1. Это не чушь собачья. В дополнение к именам и адресам я столкнулся со многими полями varchar, которые категорически заполнены выделениями.

Ответ №2:

Заметной разницы быть не должно, так как серверная часть будет хранить только тот объем данных, который вы вставляете в этот столбец. Он не заполнен до полного размера поля, как в случае со столбцом символов.

Правка: Для получения дополнительной информации эта ссылка должна быть полезной.

Ответ №3:

Этого не должно быть. Он просто определяет максимальную длину, которую он может вместить, фактическая используемая длина зависит от вставленных данных.