- ベストアンサー
テーブル設計について
現在、会員情報を保持するのに会員テーブルを使っています。 このテーブル、もともと会員IDと会員の名前だけのカラム構成だったのですが、 住所やらメールアドレスやらが増え続け、現在20あまりのカラムになっています。(これらのカラムは部分従属も繰り返しもありません。) で、悩んでいるのが、カラムが多いと検索や読み出しの速度が落ちるのでは・・・。ということです。 そこでカラムの使用頻度の高いものと低いものでテーブルを分けようと思ったのですが、それはそれで速度が低下するような気がします。 (いちいち紐付けしなくてはいけないので・・・) テーブルを分けたほうが良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
正規化する理由が無ければ表は分けないほうがいいです。 意味がない上に管理が面倒になります。 スピードも単一表の方が速いです。
その他の回答 (2)
20は多いかもしれませんね・・・ 個人的には分けます。 使用頻度の高いカラムとそうでないもので分けたほうが いい気もします。 ymmasayan様の書かれているように単一表のほうが速いのですが 容量が軽いに越したことはないです。 例えばログインフォームがあってその先に個人情報の画面があるのであれば ログインID、パスワードは別表にもってしまったほうが 速度は速くなります。 テーブルをオープンするということはそのデータすべてを一旦メモリに格納することですのでカラムの使用頻度に応じて切り分けることをオススメします。
- n09430515
- ベストアンサー率52% (11/21)
> カラムが多いと検索や読み出しの速度が落ちるのでは・・・。 一般にはインデックスがついていないカラムをwhere句で多用すると、結果を求めるためにストレージ(ディスク、ファイル)からメモリに読み込むデータ量が増えて検索速度が落ちます。 インデックスが必要なだけついていればあまり懸念はなく、そうでなければテーブルを分けないで検索条件に応じたチューニングを行う方が賢明だと考えます。