• ベストアンサー

ヌル値は記憶容量を必要としないのか???

ヌル値は記憶容量を必要としないのか??? 例えばTINYINT列は1行につき1バイトの記憶容量を必要としますが、ここにヌル値を格納した場合は0バイトとなるのでしょうか。 もしそうなら、値0よりもヌル値を多用した方が、ディスクの節約になるのかなと^^

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

物によるんじゃないでしょうか。 可変長領域のカラムにNULLを入れるのであれば容量削減になるかと思いますが、INTやCHARの様にテーブルを作成した時点で最大容量を設定するタイプはNULLを入れようが最大値を入れようがディスクサイズは変わらないような気がします。 未検証です。すみません。 ただ、そのような理由でNULLを多用するのは止めた方が宜しいでしょう。 DBにおいてNULLってヤツはかなりのクセモノで、多用すると検索を掛ける時にかなり面倒くさい手法を取らなければならずシステムを遅くしてしまうと言う罠があります。 特にINDEX項目にNULLを入れるのはオススメできません。 詳しい理由は参考URLの「NULLにまつわる諸問題」を参照の事。 (余力があれば他の項目もじっくり見て見るとDB運用についての考え方がガラッと変わるですよ)

参考URL:
http://www.geocities.jp/mickindex/database/idx_database.html
zyousuke
質問者

お礼

こんばんは! 現在のテーブルの構成に限界を感じ、プログラム作成を中断し、テーブルを1からデザインしているところです・・・ 戻ることも進むことも出来ず、気が狂いそうな心境です^^; 例えば、 キー、値1、値2、値3のような列を持つテーブルの構成を、 キー1、キー2、値のように変更して3行で管理すべきか悩んでます。 値が1個しかない場合は、最初のテーブルでは、キー値、値1、NULL、NULLとなり、 変更したテーブルではキーが2つ必要になりますがNULLのない1行のデータとなります。 ただ、値4、値5・・・のように無制限にあるわけではなく、最大で値3までと決まっているのであれば、今のままの構成の方がいいような気がしてきました。 お教えいただいたサイトを途中まで読んで力尽きました。 ひとまずNULLは、いくらか問題ありと把握しておきます。 キー項目はNULLにしてないので、まあ良しとしよう。 さてと、テーブルデザインを続けるかな・・・

関連するQ&A