我有几个关于分区时表的物理布局的问题。我一直在研究这个,但仍然有点不确定。
假设我有一个现有的表:-
CREATE TABLE dbo.[ExampleTable]
(ID INT IDENTITY(1,1),
Col1 SYSNAME,
Col2 SYSNAME,
CreatedDATE DATE) ON [DATA];
ALTER TABLE dbo.[ExampleData] ADD CONSTRAINT [PK_ExampleTable] PRIMARY KEY CLUSTERED
( [ID] ASC )
GO
我想在 CreatedDate 列上对这个表进行分区(对于这个例子,所有分区都在同一个文件组中),但是我不能把这个列作为主键。所以我将 CreatedDate 列添加到主键:-
ALTER TABLE dbo.[ExampleTable] DROP CONSTRAINT PRIMARY KEY
ALTER TABLE dbo.[ExampleTable] ADD CONSTRAINT [PK_ExampleTable] PRIMARY KEY CLUSTERED
( [ID] ASC, [CreatedDate] ASC ) ON PartitionScheme(CreatedDate)
GO
我的问题是如何对数据进行排序?数据是否会按 CreatedDate 列物理拆分为分区,然后按 ID 列排序?还是分区是逻辑的并且数据仍然按 ID 列排序?
另外,如果 ID 列是 GUID 会发生什么?数据是否会在分区中,然后在这些分区中严重碎片化?
任何建议将不胜感激,谢谢。
安德鲁
编辑:- 添加分区方案和功能:-
DECLARE @CurrentDate DATETIME;
CREATE PARTITION FUNCTION PF_Example (DATETIME)
AS RANGE RIGHT
FOR VALUES (@CurrentDate+7,@CurrentDate+6,@CurrentDate+5,@CurrentDate+4,
@CurrentDate+3,@CurrentDate+2,@CurrentDate+1,@CurrentDate,
@CurrentDate-1,@CurrentDate-2,@CurrentDate-3,@CurrentDate-4,
@CurrentDate-5,@CurrentDate-6,@CurrentDate-7,@CurrentDate-8);
CREATE PARTITION SCHEME PS_Example
AS PARTITION PF_Example
ALL TO (Data);