実際に格納される値がN*2
バイトより小さい場合は、固定されているのはN*2
ですか?nvarchar(n)はSQL Serverにどのように格納されていますか?
私は多くのフィールドが固定のnvarchar
タイプの巨大なテーブルを持っています。正確なサイズは、それが0
からN
に変わることはありません列になどnvarchar(400)
データの一部はnvarchar(100)
であり、いくつか紹介します。データの大部分はN/2
以下です。
たとえば、RecipientName
というフィールドは、タイプがnvarchar(400)
であり、9026424行あります。
RecipientName
のサイズは800*9026424 = 6.72 GB
となります。
ですが、テーブル全体の実際の格納サイズは2.02 GB
です。圧縮が適用されているか、2より小さいNが選択されていますか?
https://docs.microsoft.com/en-us/sql/t-sql/data-types/nchar-and-nvarchar-transact-sql – Siyual
これは* Unicode *、特にUTF16です。これは文字あたり少なくとも2バイトを使用します。しかし、可変長*だから、フィールドは200または800バイトを必要としません。固定長の型は、ANSI –
の場合、 'nchar'と' char'です。最初の行に10文字ある場合、10 X 2 = 20バイトがかかります。したがって、あなたはより少なくなるかもしれません。また、そのテーブルに列ストアインデックスが設定されているかどうかを確認します。 –