今回もデータベースの考察です。
今回は下記のテーブルについて考えてみようと思います。
lessons という授業用のテーブルですが
授業 1 回分を 1 レコードとします。
title には授業のタイトル
content には授業内容
file には動画や PDF 等のファイル
が入るとします。
今回はこのテーブルについて
考察してみたいと思います。
lessons テーブルが巨大かもしれない件
さて、この lessons テーブルは
全ての lesson が入る事が推測されます。
40MB の動画が 300 個登録されたとしたら
10GB の容量になります。
レコード数は少ないかもしれませんが
10GB のテーブルを検索する事を考えると
検索に時間がかかることが推測されます。
算数A の lesson だけを
表示したい画面があるとすれば
lesson 一覧を表示したいだけなのに
検索だけで時間がかかるかもしれません。
ファイルは必要ないのに
算数A の画面がなかなか表示されないのは
ナンセンスな気がしますよね?
そこで今回の例では file カラムは
file テーブルに分けると良いと思います。
動画ファイルA の id を 1 とすれば
lesson テーブルの file カラムは
1 を登録するだけで済みます。
個別の lesson を開かない限り
動作が早くなるのです。
個別の lesson ページの
動作が早くなることはありませんが
他のページが早くなるならば
分けた甲斐があると思います。
今回のまとめ
今回の例ではカラム数が多いテーブルで
・1 カラムだけ容量が大きいカラムが存在する
・そのカラムは特定の画面でしか使わない
・他のカラムだけで完結する画面がある(算数 A の lesson 一覧画面等)
という限定的なシチュエーションでは
カラムを分けると良さそうという結論でした。
カラム数が多いテーブルに
1 カラムだけ大きなカラムがあるならば
分けた方が検索速度が上がるのではないか?
という個人的な考えでした。
皆さんはどう思いましたか?
分ける派と分けない派が
いらっしゃるのではないでしょうか?
今回の例で皆さんがどちら派か
是非コメント頂けると嬉しいです。
閲覧ありがとうございました。