Sql server 分区主详细表
我使用SQL Server 2008 R2,希望将主表和详细表一起分区。如何按主表中的Sql server 分区主详细表,sql-server,sql-server-2008,sql-server-2008-r2,database-partitioning,Sql Server,Sql Server 2008,Sql Server 2008 R2,Database Partitioning,我使用SQL Server 2008 R2,希望将主表和详细表一起分区。如何按主表中的MasterTypeID字段对明细表进行分区 我的配分函数是: CREATE PARTITION FUNCTION MasterTypeFN(int) AS RANGE LEFT FOR VALUES (1,2,3) 我的分区架构是: CREATE PARTITION SCHEME MasterTypeScheme AS PARTITION MasterTypeFN TO ([FG1], [FG2],
MasterTypeID
字段对明细表进行分区
我的配分函数是:
CREATE PARTITION FUNCTION MasterTypeFN(int)
AS
RANGE LEFT FOR VALUES (1,2,3)
我的分区架构是:
CREATE PARTITION SCHEME MasterTypeScheme
AS
PARTITION MasterTypeFN
TO ([FG1], [FG2], [FG3], [PRIMARY])
我的主表结构是:
CREATE TABLE [dbo].Master
(
[MasterID] [int] NOT NULL,
[MasterTypeID] [int] NOT NULL,
...
)
ON MasterTypeScheme (MasterTypeID)
CREATE TABLE [dbo].Detail
(
[DetailID] [int] NOT NULL,
[MasterID] [int] NOT NULL,
...
)
我的明细表结构是:
CREATE TABLE [dbo].Master
(
[MasterID] [int] NOT NULL,
[MasterTypeID] [int] NOT NULL,
...
)
ON MasterTypeScheme (MasterTypeID)
CREATE TABLE [dbo].Detail
(
[DetailID] [int] NOT NULL,
[MasterID] [int] NOT NULL,
...
)
我想讨论关于主分区的分区细节表。换句话说,我想将主表记录和相关详细信息保存在一个文件组中。您想要的是可能的。您需要将
MasterTypeID
的值复制到Detail
表的每一行,以便分区函数可以应用于Detail
创建一个新列
Detail.MasterTypeID
,并适当地填充该列。在应用程序代码中或在数据库中使用触发器
列正确填充后,可以应用分区函数。您应该在详细信息表中定义
MasterTypeID
列,并对其定义权限以禁用更新此列。并在Master
表上创建触发器,将Master
表中的MasterTypeID
列与Detail
表中的MasterTypeID
列同步。谢谢您的回答。如何将Detail.MasterTypeID
和Master.MasterTypeID
同步在一起?Detail.MasterTypeID
必须是只读列,并且仅在Master.MasterTypeID
列更改时更新。另外,Detail.MasterTypeID
必须等于相关的Master.MasterTypeID
,并且必须在Master.MasterTypeID
更改时自动更改。是的,完全正确。我建议您在Master
表中创建一个AFTER
触发器,用于插入、更新、删除
。您可以在该触发器中使用INSERTED
和DELETED
伪表来相应地更新所有Detail
行。这是太多的代码在这里键入,但它是直截了当的;当然可以使用这种方法对我的主细节表进行分区。这些表是堆还是有聚集索引?如果它们是聚集表,则分区列需要是聚集索引或主键的一部分。