Tenho algumas dúvidas sobre o layout físico das tabelas quando elas são particionadas. Eu tenho pesquisado isso, mas ainda estou um pouco inseguro.
Digamos que eu tenha uma tabela existente: -
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
Desejo particionar esta tabela na coluna CreatedDate (todas as partições no mesmo grupo de arquivos para este exemplo), mas não posso ter a coluna como uma chave primária por conta própria. Então eu adiciono a coluna CreatedDate à chave primária: -
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
Minha pergunta é como os dados serão classificados? Os dados serão fisicamente divididos em partições pela coluna CreatedDate e depois ordenados pela coluna ID? Ou as partições são lógicas e os dados permanecem ordenados pela coluna ID?
Além disso, o que aconteceria se a coluna ID fosse um GUID? Os dados estariam em partições e então terrivelmente fragmentados dentro dessas partições?
Qualquer conselho seria muito apreciado, obrigado.
André
EDIT:- Adicionando o esquema de partição e a função:-
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);