ショボ短歌会

一ページに一つコメント機能をつけたいのですが、調べていると、
1.データベースは中身のデータを全て読み込んでから、データを抽出するので、レコードが多くなればなるほど読み込みが遅くなるのではないのでしょうか?
2.例えば、mysqlでページが100万ページでその一つ一つにコメント機能(コメントの最大1000件ほど)をつける場合、テーブルは別々(ぺーじ毎に)に作った方がよいのでしょうか?それとも、テーブル一つに全て書き込ませた方がよいのでしょうか?

A 回答 (4件)

1.


そりゃ遅くなります。ただし、すべてのデータを読み込んでいるわけではありません。
2.
パーティショニングが必要な場面ではそういうこともあります。
例えば会計年度ごとにパーティショニングするなど。
例にあるのはコメントが100万×1000ものレコードがあるということですよね。
そのテーブルはいかにインデックスを貼ってようが、データ量の問題で、それほどデータがない場合と比較したらパフォーマンスは悪いでしょう。
予め切り分けができるものなら切り分けるのも手です。
想定されるデータの規模によって、どのようにDB設計するかは異なっていきます。
100万ページあることも考えづらいし、それ全部にコメントごときがそのようになるとは考えづらいですが、そういう設計の場面もあり得るということです。
ただの掲示板みたいなので100万あるだろ、ということなら、そういうシステムなら過去ページはアーカイブ化などをして、パフォーマンス劣化を防ぐ手立てを取るはずです。
    • good
    • 0

1.厳密には遅くなっていくだろうと思います。

とはいえ、多くの場合は気にしなくていいぐらい微々たるものです。
2.テーブルをどう分ければ効率的かは、判断が難しいです。
「達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ」
みたいな本で、勉強するしかないと思います。
    • good
    • 0

データベースにデータが100万件あったとしても、基本的にWebのページは動的に必要な分だけ生成します。


そして、生成されたページを通じて、データベースにデータを入力したり更新したりします。

そしてデータベースのテーブル設計をどうするか?はDB設計者の腕のみせどころでもあります。
ですから、あるデータにコメントを追加する場合、同じテーブルに格納するか、別テーブルに格納するか?は、データをどう利用するか、利用頻度などを考慮してデータベースの正規化作業の結果によって変動します。
    • good
    • 0

db専門ではないので、正確には断言できませんが、インデックスを振っていればそんなに変わらないと思います。



https://www.atmarkit.co.jp/ait/spv/1703/01/news1 …
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!