Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Particionamento por ano versus tabelas separadas denominadas Data_2011, Data_2010 etc.


De uma perspectiva interna, os métodos são essencialmente os mesmos.

Nos bastidores, quando você cria uma partição baseada em data, o mecanismo SQL cria tabelas físicas separadas para cada partição e, em seguida, faz o que é basicamente um UNION quando você consulta a própria tabela.

Se você usar um filtro em sua consulta na tabela particionada que corresponde ao seu campo de particionamento (DateField digamos), então o mecanismo pode ir diretamente para a partição que você precisa para os dados. Caso contrário, ele pesquisa cada tabela física na tabela lógica conforme necessário para concluir a consulta.

Se suas consultas envolverem um filtro de data (o que parece que acontecerão na sua pergunta), não consigo pensar em nenhuma vantagem para o seu método "personalizado".

Essencialmente, a escolha que você precisa fazer é você quer ser responsável por toda a lógica e casos de canto envolvidos no particionamento ou confia nos desenvolvedores da Microsoft que fazem isso há décadas para fazer isso por você?

forte>

Para meus próprios propósitos, se houver uma estrutura interna para algo que eu queira fazer, sempre tento usá-la. É invariavelmente mais rápido, mais estável e menos propenso a erros do que uma solução "roll-your-own".