質問: 現在web上でマンガを作るサービスを作っていて、データ構造が階層的になっています。 novel -chapter (コマの集合 --entry (一つのコマのモデル ---entryBaloon (吹き出しのモデル ---entryCharacter (画像のモデル という風な階層構造をbackbone.jsで作っていて、データベースもそれに準じた形で作っているのですが、entryが増えると、サーバからnovel全体をとってこようとした時のパフォーマンスが非常に悪いです。 閲覧だけならキャッシュをとっておけばいいのですが、backboneを使って編集内容を反映しているので、その度にキャッシュをアップデートする訳にもいきません。 現状はトップで表示するものだけキャッシュを作っています。 どうするのが適切でしょうか? (ソースコードは )
回答: とりあえず、外部キーになっているカラムにインデックスを張りましょう。マイグレーションでやるなら例えば ``` add_index :chapters, :novel_id ``` です。 それ以上については、 * プロファイルの結果 * 想定されるデータ量 * 要求されるパフォーマンスと現実との差異 * すでにやったチューニング のなにもかもがわからないので何が適切かも答えようがないです。