Access開発の落とし穴?→フィールドサイズ

Accessマクロの流用開発案件で気づいたけど、Accessのテーブルプロパティの一つ「フィールドサイズ」。

流用開発時、流用元のテーブル定義にテキストフィールドのフィールドサイズがデフォルトより小さく設定されていたので、想定していたデータが全て入っておらず、ちょっと躓くことがあった。

そこで気になったのだけど、そもそもフィールドサイズってデフォルト値未満に設定する必要あるのか?
詳しく調べてみた。

フィールドサイズの使い方

Accessでは数値やテキストフィールドの場合、フィールドサイズを設定することができる。

Accessデザインビューでフィールドサイズ初期値255

例えば「短いテキスト」フィールドなら、デフォルト値は「255」となっているが、任意に変更することが可能である。

フィールドサイズに設定された値を超えてデータが入った場合、フィールドサイズ分のデータしか格納されない。
(例.フィールドサイズが3の場合、「12345」のデータが来ても「123」までしか格納されない)

フィールドサイズの影響

とあるサイトに「フィールドサイズを設定すると、設定値に応じた領域が確保される」と書かれていたので、設定することでファイルサイズやメモリ使用量を節約できるのかな?と思い、早速調査してみた。

まずは「短いテキスト」のフィールドサイズ「255」で作成。
データを適当に5000件作成してみる。

次に作成したファイルをコピーして、フィールドサイズを「5」に変更して保存してみる。

フィールドサイズを5に変更

ファイルサイズで比較してみると、フィールドサイズを小さくした方がむしろ増えた。

ファイルサイズの比較(フィールドサイズ調査)

データベースの最適化を双方のファイルにしてみると…

Accessデータベースの最適化

それでもファイルサイズは「255」の方が小さい。

最適化後のファイルサイズの比較(フィールドサイズ調査)

ファイルサイズは関係なさそうだけどメモリは?

メモリサイズの比較(フィールドサイズ調査)

メモリ使用量も、むしろ「255」の方が小さい…。

いよいよフィールドサイズをデフォルト値から変更するメリットが分からなくなって、キーボード投げたくなったけど、灯台下暗し、Microsoftサイトに以下の記載があった。

テーブルの数値フィールドのフィールド サイズ プロパティを変更することで、テーブル内の各レコードで使用される領域サイズを調整できます。テキスト データを格納するフィールドのフィールド サイズも変更できますが、この操作を行っても、使用される領域サイズには大きな効果はありません。

フィールド サイズの設定 – Access

問題はここ!
テキスト データを格納するフィールドのフィールド サイズも変更できますが、この操作を行っても、使用される領域サイズには大きな効果はありません。

なーんだ、じゃあテキストフィールドならあえてデフォルトより小さく設定する必要ないじゃないか、ということで流用元の謎設定に嵌められたけど、今後テキストフィールドの場合はデフォルトから変えない!ってことでひとまず納得。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください