我正在做一些分析以对表进行分区。
这里是桌子
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AnalysisMaster](
[AnalysisMasterId] [bigint] NULL,
[AnalysisDefinitionId] [bigint] NULL,
[AnalysisDate] [date] NULL
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AnalysisDefinition](
[analysisid] [int] NOT NULL,
[dataset] [int] NULL
) ON [PRIMARY]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[OutputData](
[analysisid] [int] NOT NULL,
[derivativeId] [int] NOT NULL,
[metric] [int] NOT NULL,
[value] [decimal](18, 0) NOT NULL,
[metricdate] [date] NULL
) ON [PRIMARY]
GO
analysisId和derivedId的组合是唯一的。
我正在寻找一个已经有100亿行的现有表“ OutputData”的分区。在analysisId,derivedId上有一个聚集索引,并且有十二个存储过程,它们使用这两列来查询数据。
因此,我最安全的选择是使用'analysisId'对表进行分区。我遇到的所有Microsoft文档,博客都基于日期/年份列提供了示例。如果我打算采取策略划分基于行数的表说1000万(1000万),我该怎么做?因此,最新的分区中有最新的1000万个“ analysisId”。 partitionFunction是什么样的?我打算仅在最新的分区上重建索引。我想有两个文件组,FG1(所有其他分区)和FG2(最新分区)。
CREATE PARTITION FUNCTION PartFunc(INT)
AS RANGE LEFT
FOR VALUES(10000000, 20000000) ;
这将为您提供3个分区,您的1-10,000,000,然后是10-20百万,然后是2000万+