MySQLを使用しています。XMLファイルの内容をデータベースに保存する必要があります。ファイルのサイズは通常10k未満です。
テーブルは次のようになります。
articles
-----------
id
date
writer
...
file_name
file_content (Text)
file_date
date
とだけを選択すると、テーブルを分割するとパフォーマンスが向上しますwriter
か?または、このテーブルを分割する他の理由はありますか?
MySQLを使用しています。XMLファイルの内容をデータベースに保存する必要があります。ファイルのサイズは通常10k未満です。
テーブルは次のようになります。
articles
-----------
id
date
writer
...
file_name
file_content (Text)
file_date
date
とだけを選択すると、テーブルを分割するとパフォーマンスが向上しますwriter
か?または、このテーブルを分割する他の理由はありますか?
これは垂直分割と呼ばれます。
基本的に、データセット全体が非常に大きく(たとえば、RAMよりも大きい)、ほとんどのクエリが大きなfile_contentデータを使用しない場合、別のテーブルに配置するとメインテーブルがはるかに小さくなり、RAMにキャッシュされやすくなります。そして、はるかに高速です。
もちろん、file_contentの取得は少し遅くなるため、使用頻度によって異なります。
私はフォーラムでこのテクニックを使用しました。投稿テキスト(HTMLに解析されたbbcode)をメインテーブルに保存し、元の投稿(bbcode)を別のテーブルに保存しました。フォーラムページを表示する場合、メインテーブルのみがヒットします。元の投稿テキストは、投稿の編集にのみ使用されます。これにより、投稿テーブルのサイズが2で除算され、このサーバーのRAMを2倍にする必要がなくなりました。