O MSDN afirma que ambos Month(date)
e DatePart(month, date)
retornam exatamente o mesmo valor, no entanto, há alguma diferença entre os dois métodos, desempenho ou não?
Estou criando algumas consultas que agregam grandes conjuntos de dados com base no mês e, às vezes, demoram um pouco para serem executadas, então gostaria de ter certeza de que estou usando a sintaxe mais eficiente possível.
Atualmente estou usando o SQL Server 2005
Acabei de executar vários testes em uma tabela grande (12.430.129 linhas) no SQL Server 2008r2.
smalldatetime
Resultados:
MONTH()
- Correu em 6662, 6583, 6661 e 6560 ms. Tempo médio de execução 6616,5msDATEPART()
- Correu em 6520, 6584, 6552 e 6608 ms. Duração média 6566msEntão,
DATEPART()
parece ser marginalmente mais rápido. No entanto, esta é uma diferença de 7 décimos por cento, então provavelmente não importa muito.Na minha experiência, essas duas funções são idênticas em desempenho. Mas eu sugeriria dois testes rápidos em seu ambiente: