SQL,两个表,一个共享主键



我想要两个表,这样我就可以将旧记录移到第二个表中,这样我可以保持主表的小,但仍然希望能够使用一个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

我确实想了两种可行的方法,但我认为应该有更好的方法吗?

第一:在sys_constants表中存储一个主键计数器,并在每次添加记录时递增。或

第二:添加另一个表,该表将会话表主键和过期会话主键链接到第三个主键,然后使用第三个关键字链接到我的日志表。

您想过使用表分区吗?我对你的要求了解不够,但可能值得调查一下。

当表和索引变得非常大时,分区可以通过将数据划分为更小、更易于管理的部分。这本文主要研究水平分区,其中行将存储在多个单独的分区中。定义分区集是根据您的需要进行自定义、定义和管理的。Microsoft SQL Server 2005允许您根据使用定义的范围或列表的特定数据使用模式。SQL Server2005年还为长期管理通过添加设计的功能对表和索引进行分区围绕新的表和索引结构。

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

为什么不为每个表保留单独的主键,而是添加另一列作为会话的唯一标识符,无论它在哪个表中?我看到你有会话ID。。。如果对它进行索引,甚至可以使用它进行查找。

相关内容

  • 没有找到相关文章

最新更新