Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Nota
titleAtenção

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
languagesql
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
languagesql
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: 

Image Added

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.