Como Kaboing mencionou,
MAXDOP(n)
realmente controla o número de núcleos de CPU que estão sendo usados no processador de consulta. Em um sistema completamente ocioso, o SQL Server tentará puxar as tabelas para a memória o mais rápido possível e juntá-las na memória. Pode ser que, no seu caso, seja melhor fazer isso com uma única CPU. Isso pode ter o mesmo efeito que usar
OPTION (FORCE ORDER)
que força o otimizador de consulta a usar a ordem de junções que você especificou. Em alguns casos, eu vi OPTION (FORCE PLAN)
reduzir uma consulta de 26 segundos para 1 segundo de tempo de execução. Books Online continua dizendo que os valores possíveis para
MAXDOP
estão:
0 - Usa o número real de CPUs disponíveis dependendo da carga de trabalho atual do sistema. Este é o valor padrão e a configuração recomendada.
1 - Suprime a geração de planos paralelos. A operação será executada em série.
2-64 - Limita o número de processadores ao valor especificado. Menos processadores podem ser usados dependendo da carga de trabalho atual. Se for especificado um valor maior que o número de CPUs disponíveis, será usado o número real de CPUs disponíveis.
Não tenho certeza de qual é o melhor uso de
MAXDOP
é, no entanto, eu daria um palpite e diria que se você tiver uma tabela com 8 partições, você deve especificar MAXDOP(8)
devido a limitações de E/S, mas posso estar errado. Aqui estão alguns links rápidos que encontrei sobre
MAXDOP
:Livros Online:Grau de Paralelismo
Diretrizes gerais a serem usadas para configurar a opção MAXDOP