想象一下以下假设的数据库结构。基本上它是一个自上而下的结构(国家有订单,订单有 OrderLines,OrderLine 有 ShipLines,等等)。
我想按 CountryID 对我的 SQL Server 2008 数据库进行分区。如您所见,CountryID 仅在前 2 个表中(例如 amCountries 和 amOrders)。鉴于(据我所知)分区是在表级别完成的,我是否需要将 CountryID 添加到其余表才能对它们进行分区?或者在 SQL Server 中是否有某种类型的级联可以让我跳过将 CountryID 添加到所有内容?
分区仅在表级别,用于管理该表的分区。通常,分区的优势在于换入和换出数据以及获得对存储和备份粒度的额外控制。在某种程度上,如果连接中有共享分区列,它也可以帮助提高性能,但这可能不应该成为分区的理由。
我理解您对子表的想法,但如果您希望该数据也按国家/地区分区(出于上述某些原因),您将不得不添加一列,因为分区功能受到限制。
您首先考虑为什么要分区?
http://msdn.microsoft.com/en-us/library/ms190787
通常分区是在日期范围内。话虽如此,您将 Country 列迁移到子表的想法似乎是不可避免的。在这种情况下,放弃您拥有的代理键并使用复合键,如下所示: