サイズが 54 GB のデータベースがあり、一部のテーブルには大量の行が含まれています。
現在、これらのテーブルにクエリを実行するとパフォーマンスが低下し、クエリの実行に時間がかかります。
インデックスなどを作成しましたが、特定のテーブルのレコードをアーカイブし、ユーザーが必要なときにのみクエリを実行することを計画しています。
たとえば、 というテーブルがTransaction
あり、多くの場合、3 か月より古い行は必要ないとします。
今私がやりたいことはTransaction
、3 か月以上前のテーブルのすべての行を他のテーブルに保存し、UI のユーザーがアーカイブされたトランザクションを表示すると言ったときにのみそのテーブルをクエリすることです。
私が考えることができるオプション:
同じデータベースで作成
ArchivedTransaction
しますが、問題はデータベースのサイズが大きくなり続け、ある時点で行の削除を開始する必要があることです。行を別のデータベースに完全に移動しますが、この場合、データベース要求をどのように管理すればよいですか? 多くの変更が必要になります。
アーカイブされた列をテーブルに追加し、必要に応じてフラグをチェックしますが、サイズの問題は同じであり、パフォーマンスはそれほど向上しません。
どちらに進むべきかわかりませんが、私が気付いていないこれを処理するためのより良い方法があると確信しています。
どちらに行くべきかアイデアはありますか?あなたが提案できる方法はありますか。