【发布时间】:2019-12-04 16:50:49
【问题描述】:
我正在做一些分析来对表进行分区。
这是表格
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和derivativeId的组合是唯一的。
我希望对已有 100 亿行的现有表“OutputData”进行分区。 在 analysisId、derivativeId 上有一个聚集索引,并且有十几个使用这两列来查询数据的存储过程。
因此,我拥有的一个最安全的选择是使用“analysisId”对表进行分区。我遇到的所有 Microsoft 文档和博客都有基于日期/年份列的示例。如果我打算采取策略进行分区 基于行数的表说 10000000(1000 万),我该怎么做?所以最新的 1000 万个“analysisId”在最新的分区中。 partitionFunction 会是什么样子?我打算只在最新的分区上重建索引。我想要两个文件组,FG1(所有其他分区)和 FG2(最新分区)。
【问题讨论】:
标签: sql sql-server-2017 database-partitioning