Моя рекомендация: сделайте их такими же большими, какими они действительно вам нужны.
например. для столбца почтового индекса вполне достаточно 10-20 символов. То же самое для номера телефона. Электронная почта может быть длиннее, 50-100 символов. Имена - ну, обычно я получаю 50 символов, то же самое для имен. Вы всегда можете легко и просто расширить поля, если вам это действительно нужно - это совсем не большое дело.
Нет смысла делать все поля varchar / nvarchar настолько большими, насколько они могут быть. В конце концов, страница SQL Server является фиксированной и ограничена 8060 байтами на строку. Наличие 10 полей NVARCHAR (4000) просто вызывает проблемы .... (так как если вы на самом деле попытаетесь заполнить их слишком большим количеством данных, SQL Server будет против вас).
Если вам ДЕЙСТВИТЕЛЬНО нужно действительно большое поле, используйте NVARCHAR / VARCHAR (MAX) - они хранятся на вашей странице, пока они подходят, и будут отправлены в «переполненное» хранилище, если они станут слишком большими.
NVARCHAR против VARCHAR: это действительно сводится к тому, что вам действительно нужны «экзотические» символы, такие как японские, китайские или другие символы не в стиле ASCII? В Европе даже некоторые восточноевропейские символы больше не могут быть представлены полями VARCHAR (они будут лишены своего хачека («правописание»). Западноевропейские языки (английский, немецкий, французский и т. Д.) Все очень хорошо обслуживаются VARCHAR.
НО: NVARCHAR использует вдвое больше места - на диске и в памяти вашего SQL Server - всегда. Если вам это действительно нужно, вам это нужно - но действительно ли вы ДЕЙСТВИТЕЛЬНО ? :-) Это зависит от вас.
Марк