Tenho uma tabela grande no SQL Server (cerca de 5,5 bilhões de linhas) e pretendo criar uma nova tabela particionada para esses dados, provavelmente por ano, com grupo de arquivos para cada ano para melhor gerenciamento. Esta é uma tabela de fatos com dados transacionais que são carregados diariamente (cerca de 7 milhões de linhas) e não são consultados com frequência e nunca são atualizados. Minha ideia era carregar dados em uma nova tabela e criar grupos de arquivos somente para leitura de dados anteriores.
A questão é qual seria a melhor maneira de carregar dados em uma nova tabela. Devo carregar na tabela heap e criar CCI ou criar CCI antes de carregar os dados? Há alguma outra consideração que devo fazer?
e
significa que você deve criar sua tabela agrupada no esquema de partição. Se você criar primeiro o heap particionado, depois de criar o índice clusterizado nele, seu particionamento desaparecerá, e a criação do índice clusterizado no esquema de partição sobre o heap com 5,5 bilhões de linhas levará muito tempo e o log do seu banco de dados provavelmente crescerá muito você simplesmente não pode esperar como.
Portanto, você deve primeiro criar uma tabela clusterizada vazia no esquema de partição. Em seguida, eu criaria uma tabela intermediária para acomodar os dados por um ano, no mesmo grupo de arquivos onde reside a partição para a qual você deseja mover seus dados. Por exemplo, sua primeira partição é destinada a 2015, crie uma tabela intermediária no mesmo grupo de arquivos executando
select ... into myStagingTbl from myTbl where year = 2015.
Criar índice clusterizado nesta tabela e criar restrição de verificação:year = 2015
. Agora você pode mudar myStagingTbl para sua tabela particionada vazia. Repita isso para cada partição.