質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

2回答

5735閲覧

accessのテーブル定義について

syncrock

総合スコア209

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

0グッド

0クリップ

投稿2018/01/11 01:46

Accessでテーブルを作成する際のフィールドサイズは無駄に大きいとデメリットがあるのでしょうか。
例えば、入力上10桁しか入らないフィールドがあり、そのデータが格納されるフィールドの桁数は255とした場合。
デメリットとして何が考えられるでしょうか。
ここでいうデメリットは例えば処理速度が遅くなるなどの性能面でのデメリットを教えて頂ければと思います。
もちろん10桁なら10桁に設定すべしだとは思いますが、どこかで作られたエクセルなどをインポートされるテーブルの場合は255とは言いませんが余裕を持っておいた方が良いのかとも思いまして。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

フィールドサイズが255ということはテキスト型のフィールドの場合ですね。

テキスト型フィールドのデータでは、実際の値を格納するのに必要な領域だけが確保されます。つまり固定長ではなく可変長ということです。
下記のリンク先の最後の注を参照。

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

ですので、フィールドサイズを小さく設定することで、ファイルサイズが節約できるということはないし、処理速度が早くなるということもないです。

テキスト型フィールドでフィールドサイズを設定する意味は、仕様として入力できる文字数を制限する必用があるかどうかです。
例えば、
郵便番号は7桁固定ですのでフィールドサイズを 7 に設定しておく。
入力欄のサイズに収まるようにフィールドサイズを設定する。
などです。

数値型だと、フィールドサイズ(バイト型、整数型、長整数型)で必要なディスク領域のサイズが決まりますので、必要なサイズにしておいたほうがいいですね。Accessの場合、ファイルサイズが2GBまどという制限がありますので。

投稿2018/01/11 02:32

hatena19

総合スコア33782

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sousuke

2018/01/11 02:34

そうなんですね、勉強になります。
syncrock

2018/01/11 03:27

ありがとうございます。 大変勉強になりました。
sazi

2018/01/11 04:31

hatenaさん: リンク先の一番最後に、 >注: テキスト型フィールドのデータ (Access 2016 を使用する場合は短いテキスト) では、 >実際の値を保存するのに必要な領域だけが確保されます。 >"フィールド サイズ" プロパティはフィールド値の最大サイズになります。 とあります。 冒頭では、 >テキスト データを保存するフィールドのフィールド サイズも変更できますが、 >この操作を行っても、使用される領域サイズには大きな効果はありません。 となっていて少し矛盾を感じます。 実際にやってみればいいのでしょうが、もし確認されたことがあるなら、ご教示下さい。
hatena19

2018/01/11 05:01

リンク先からテキスト型のフィールドサイズに関するものを抜き出すと、 > テキスト データを保存するフィールドのフィールド サイズも変更できますが、この操作を行っても、使用される領域サイズには大きな効果はありません。 > 数値フィールドの場合は、フィールド サイズによって、Access がフィールドの各値に使用する『正確な』ディスク領域のサイズが決まります。 > テキスト フィールドの場合は、フィールド サイズによって、フィールドの各値で使用できるディスク領域の『最大サイズ』が決まります。 > 実際の値を保存するのに『必要な領域だけが確保』されます。"フィールド サイズ" プロパティはフィールド値の『最大サイズ』になります。 ※『』は私が挿入しました。 数値型の場合は、固定長で、1データで使用される領域サイズは固定、 テキスト型の場合は、1データで使用される領域サイズは、データ長によって必要な領域だけ確保(可変長)、フィールドサイズは確保できる最大サイズを決定するもの、と解釈できると思います。 したがって、テキスト型のフィールドサイズを変更しても、使用される領域サイズはデータ長に依存することになるので、領域サイズは変化しない、ということですので、特に矛盾は感じませんが。
sazi

2018/01/11 05:23

なるほど。 『必要な領域』には関係なく、"フィールド サイズ" プロパティはフィールド値の『最大サイズ』を指定するもの、ということですね。
guest

0

10以上の長いデータが入る可能性が否定できないなら長くするしか無いです。
一応性能的にはおっしゃる通りのデメリットがあると思いますがそれを実感できるほどの
データを処理するかどうかというところに尽きると思います。

帯域の狭いところで大量のデータをやり取りすれば効果はあると思います。しかし
「Accessのテーブル」でそれをするというのはあまり聞きません。大体上位のデータベースに
移行してしまうからです。

どれくらいのデータが入る予定でネットワーク越しで使うのかスタンドアロンなのか等で
妥協点が変わってきます。

追記:サイズが小さくなることはないそうですm(_ _;)m

投稿2018/01/11 02:23

編集2018/01/11 02:36
sousuke

総合スコア3828

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問