SQL Server 2005では、UDT(User Defined Datatypes)を特にSK(代理キー用)と定義しました。これらは32ビットの 'int'として定義されていました。その結果、サイズは4バイトでした。 UDTの最大記憶サイズを表示 SQL Server UDTのサイズ2005〜2008
ストレージ:SQL Server 2008では
は、整数データ型のUDTは、精度に応じて、異なるストレージメカニズムを使用します。最大ストレージサイズは、精度に基づいて異なります。
精度(桁)......ストレージ(バイト)
1 - 9 ........................ 5
19 .................... 920 - - 28 ................
10 ... 13
29 - この38 ................... 17
1つの結果はint型とBIGINTの両方に基づいてのUDTが占めるということです9バイト! 注記:native intデータ型とbigintデータ型は、依然としてそれぞれ4バイトと8バイトを占有しています。
9バイトはサロゲートキーUDTのかなり重いようです!
誰にもこれがなぜそうであるのか説明することはできますか(特にこれの設計理念は何ですか?)どのようにUDTとネイティブデータ型の間にこのような相違がありますか?
UDTを使用しないこと以外は別の方法がありますか?
こんにちはヨハンに探して、そのためのおかげで、あなたのデータ型のフットプリントを確認することができます。私はあなたが作ったポイントを理解しています。しかし、「新しいユーザー定義データ型」に入り、intに基づいてUDTを作成すると、精度は10として表示され、記憶域はsys.typesが示唆するように4ではなく9バイトとして表示されます。それに関するコメント? – PaoloFCantoni
こんにちはJohanさん、さらなる調査によると、それはUIのバグです。 sys.typesに割り当てられる実際のストレージ容量は、intの場合は4バイトです。 ご協力いただきありがとうございます。 – PaoloFCantoni
ありがとうございます。 (代行部分)私の答えが助けになったら、アップボートして受け入れてください。 –