私はSQL Server 2008 R2
です。一部の製品では季節の値がのデータベース構造を現在開発中です。SQL Serverで季節データベース値のアーカイブを処理する方法
季節ことで、私はそれらの値が顧客使用の観点から、特定の日付の後に有用ではないだろうということを意味します。しかし、これらの値は統計結果のために内部のものによって使用されます。
販売ウェブサイトでは、商品検索用の機能を追加し、私の目的の1つはこの検索をできるだけ最適化することです。 しかし、データベーステーブルの中でより多くの行、この検索は遅くなります。したがって、未使用の値をアーカイブすることを検討します。
SQL Serverのジョブで自動アーカイブを自動的に処理できます。問題はない。しかし、私はどのようにそれらの値をアーカイブする必要がありますか分からない。
私が思いつくことができる最良の方法は、同じデータベース内に同じ列で別のテーブルを作成してそこに置くことです。
例:
私のメインテーブル名が
ProductPrices
あり、そこに主キーは、このデータベースに 定義されています。次に、別のテーブルProdutcPrices_archive
を作成しました。このテーブルのプライマリキーフィールドは 、ProdutPrices
プライマリキー値以外はProductPrices
テーブルと同じカラムを作成しました。私はそれが有用であるとは思わない その値(私は正しいと思いますか?)。内部使用のために、私は
UNION
と一緒 を2つのテーブルの値を置くことを検討(正しい方法ということですか?)。
このデータベースは、長時間使用するためのものであり、最適な構造で設計する必要があります。私はここで長期的に何かを逃すかどうか分からない。
アドバイスをいただければ幸いです。
"しかし、データベーステーブルの中の行が多いほど、この検索は遅くなるでしょう" - おそらく必ずしもそうではありません。あなたが記述するデザインは、テーブルへのすべてのアクセスが "製品"への外部キーを経由することを示唆しています。この場合、同じテーブルにさらに多くのデータを挿入することで、速度の低下に気づくことはほとんどありません。 パフォーマンスの問題があることを証明できるまで、このシナリオの最適化を開始することはありません。実際に予想されるよりも10倍多くのテストデータをデータベースに取り込み、測定したいと思います。 –
自動アーカイブプロセスを確認するには、以下のリンクをクリックしてください。 http://stackoverflow.com/questions/18908903/auto-maintain-archive-purge-purge-on-source-table-in-sql-server –