私の学習は、デフォルトとして「NVARCHARを使用する」ことです...しかし、@CadeRouxには良い点があります.USナンバープレートのように、データがASCII以外のものを決して保持しないことが確実な場合、VARCHARはあなたを少し節約するかもしれません料金。
彼のよくできた声明の裏側は、名前 (人、通り、場所) または自然言語のテキスト (電子メール、チャット、記事、ブログ投稿、写真のキャプション) を持つものにはすべて「NVARCHAR を使用してください」であると言えます。そうしないと、"firstname" 列で "François" や "José" を正しくエンコードできず、テキスト列で "外国の" 発音記号を含むテキストを使用できなくなります。セントマーク「¢」、段落記号「¶」、箇条書き「•」。(これらはいずれもASCII 文字ではなく、VARCHAR フィールドに入力するための適切な標準的な方法がないためです。信じてください。怪我をすることになります。)
私が取り組んできたどのプロジェクトでも、NVARCHAR を使用したことで叱られたことは一度もありません。また、コードや DB スキーマを (特に稼働中の実稼働システムで) 作り直さなければならなくなった場合、再調整に費やされたコストは、50% 小さいディスクを購入することによる「節約」を簡単に上回ります。
この質問を本当に理解するには、ASCII、Unicode、および Unicode の典型的なエンコーディング (UCS-2 や UTF-8 など) を理解する必要があります。