У меня есть красный, что NVARCHAR занимает в два раза VARCHAR
Да. Согласно Microsoft: «Размер памяти, в байтах, в два раза превышает количество введенных символов + 2 байта» (http://msdn.microsoft.com/en-us/library/ms186939(SQL.90).aspx).
Но хранение дешево; Я никогда не беспокоюсь о нескольких дополнительных байтах.
Кроме того, сохраните себе проблемы в будущем и установите максимальную ширину на более щедрую, например, на 100 символов. Для этого нет никаких накладных расходов на хранение, когда вы используете varchar или nvarchar (в отличие от char/nchar). Вы никогда не знаете, когда вы столкнетесь с тройной фамилией или длинным иностранным именем, которое превышает 30 символов.
nvarchar используется для интернационализации.
nvarchar может хранить любой символ юникода, например символы из нелатинских скриптов (арабский, китайский и т. Д.). Я не уверен, как ваше приложение будет принимать данные (через Интернет, с помощью инструментария GUI и т. Д.), Но вполне вероятно, что всякая технология, которую вы используете, поддерживает unicode из коробки. Это означает, что для любых введенных пользователем данных (таких как имя) есть всегда возможность получения нелатинских символов, если не сейчас, то в будущем.
Если бы я строил новое приложение, я использовал бы nvarchar. Назовите это «будущим», если хотите.
http://stackoverflow.com/questions/35366/varchar-vs-nvarchar-performance –