126のパーティションがあり、テーブルサイズが約270 GBであるパーティションテーブルのクラスター化インデックスを再構築する方法を知る必要があります。
また、本番環境で実行したいので、最速の方法と方法を教えてください。
これは非常に重要な変更であり、実行する必要があるため、ヘルプや提案は高く評価されます。
パーティションは個別に再構築できます。これにより、再構築を中断して、すでに実行された作業を保持できます。以前に完了したパーティション番号の後で、再構築を再開できます。以下はこの手法の例で、@ PartitonNumber値は再起動シナリオで変更できます。
DECLARE
@PartitionNumber int = 1 --specify start partition number
, @EndPartitionNumber int;
--get last partition number
SELECT @EndPartitionNumber = MAX(p.partition_number)
FROM sys.indexes AS i
JOIN sys.partitions AS p ON
p.object_id = i.object_id
AND p.index_id = i.index_id
WHERE
i.object_id = OBJECT_ID(N'dbo.YourTable', 'U')
AND i.name = N'YourIndexName';
--rebuild each partition individually
WHILE @PartitionNumber <= @EndPartitionNumber
BEGIN
RAISERROR('Rebuilding partition %d', 0, 0, @PartitionNumber) WITH NOWAIT;
ALTER INDEX [YourIndexName]
ON [dbo].[YourTable]
REBUILD Partition = @PartitionNumber;
--WITH(ONLINE=ON); --specify desired online mode in SQL 2014 and later
RAISERROR('Partition %d rebuild completed', 0, 0, @PartitionNumber) WITH NOWAIT;
SET @PartitionNumber += 1;
END;
GO