Histórico da Página
...
Nota | ||
---|---|---|
| ||
Não utilize consultas com * em bases de produção ou em fontes customizados, pois isto impacta a performance da aplicação. Este é apenas um exemplo executado em uma base de testes. |
Essa query demorou 1503 1489 ms. Analisando o plano de execução, o SQL Server nos indica a criação de um índice:
...
Bloco de código | ||
---|---|---|
| ||
USE [master] go ALTER DATABASE [statistic_teste3] SET auto_create_statistics ON go |
Nota |
---|
OBS: altere Altere o “statistic_teste3” para o nome do seu banco de dados. |
...
Bloco de código | ||
---|---|---|
| ||
DBCC SHOW_STATISTICS (SD3990, D3_DOC) |
Estatística criada:
Após realizar a limpeza do buffer, a query foi executada novamente com a estatística criada. Temos, então, o Trial 3, onde o novo tempo de execução caiu de 274 ms para 143 ms, com uma redução de aproximadamente 52,2% entre estes testes e pouco mais de 90% em relação ao teste inicial. Lembre-se: estes valores são referentes às condições aqui aplicadas, e podem variar de acordo com seu cenário.
Para comprovar que a alteração das estatísticas afeta o tempo da consulta, o parâmetro AUTO CREATE STATISTICS foi retirado novamente, e a estatística que havia sido criada foi apagada.
Ao rodar novamente a query, o tempo teve um aumento de 143 ms para 1499 ms, ou seja, 1.048,25% em relação à consulta com estatísticas:
Comprovação dos testes
No início deste documento, pontuamos dois fatores que impactam diretamente a criação do plano de execução, que são a cardinalidade e os operadores.
Sendo assim, aumentamos a cardinalidade, incluindo mais de 20 milhões de registros nesta tabela, e verificamos a performance da query nos testes já apresentados.
Trial 1: Banco de dados com Auto Create Statistics False.
- O Query Optimizer não encontra estatística e indica a criação da estatística e de um índice. Tempo de 48 segundos.
Trial 2: Banco de dados com Auto Create Statistics True.
- O Query Optimizer não encontra estatística e cria uma nova estatística. Tempo de 2,9 segundos.
Trial 3: Banco de dados com Auto Create Statistics True.
- O Query Optimizer agora encontra estatística e a utiliza. Tempo de 1,4 segundos.
Trial 4: Banco de dados com Auto Create Statistics False novamente.
- Mesmo comportamento do Trial 1. Tempo de 48 segundos.