1

古いレコードを 2 番目のテーブルに移動できるように 2 つのテーブルが必要なので、メイン テーブルを小さく保ちますが、1 つの int プライマリ キーを使用して両方のテーブルにリンクできるようにしたいと考えています。

例: (実際のテーブルにあるものからこの例を単純化しました) セッションのトレースを保持していて、期限切れのセッションを Expired_Sessions テーブルに移動したいのですが、セッションを Login_Attempts テーブルのようなログ テーブルにもリンクしていますが、そうではありません。それらのテーブルへのリンクを壊したくありません。

Sessions
--------------------
PKey       | int
Session_ID | varchar


Expired_Sessions
--------------------
PKey       | int
Session_ID | varchar

Login_Attempts
--------------------
Session_FKey | int
Count        | int

これを行うには2つの方法がうまくいくと思いましたが、これを行うためのより良い方法があるはずだと思いましたか?

1: sys_constants テーブルに主キー カウンターを格納し、レコードを追加するたびにインクリメントします。また

2: セッション テーブルの主キーと期限切れセッションの主キーを 3 番目の主キーにリンクする別のテーブルを追加し、3 番目の主キーを使用してログ テーブルにリンクします。

4

2 に答える 2

1

テーブル分割の使用について考えたことはありますか? 私はあなたの要件について十分に知りませんが、調査する価値があるかもしれません.

テーブルとインデックスが非常に大きくなった場合、データをより小さく管理しやすいセクションにパーティション化すると、パーティション化が役立ちます。このホワイト ペーパーでは、行の大きなグループが複数の個別のパーティションに格納される水平分割に焦点を当てます。分割されたセットの定義は、必要に応じてカスタマイズ、定義、および管理されます。Microsoft SQL Server 2005 では、定義された範囲またはリストを使用して、特定のデータ使用パターンに基づいてテーブルを分割できます。また、SQL Server 2005 は、新しいテーブルとインデックスの構造を中心に設計された機能を追加することで、分割されたテーブルとインデックスを長期的に管理するための多数のオプションを提供します。

http://msdn.microsoft.com/en-us/library/ms345146(v=sql.90).aspx

于 2012-09-11T15:57:41.647 に答える
0

テーブルごとに個別の主キーを保持するだけでなく、セッションの一意の識別子として機能する別の列を追加するのはなぜですか? Session_ID を持っているようです...インデックスを作成すると、それを検索に使用することもできます。

于 2012-09-11T15:51:52.300 に答える