Ouvi falar de estatísticas que o SQL Server mantém por padrão. O que eles estão rastreando e como posso usar essas informações para melhorar meu banco de dados?
Ouvi falar de estatísticas que o SQL Server mantém por padrão. O que eles estão rastreando e como posso usar essas informações para melhorar meu banco de dados?
As estatísticas são simplesmente uma forma de metadados dinâmicos que auxiliam o otimizador de consultas a tomar melhores decisões. Por exemplo, se houver apenas uma dúzia de linhas em uma tabela, não faz sentido ir a um índice para fazer uma pesquisa; será sempre melhor fazer uma varredura completa da tabela. Mas se essa mesma tabela crescer para um milhão de linhas, provavelmente será melhor usar o índice. Mas se você consultar essa tabela em uma coluna que tem apenas poucos valores exclusivos (por exemplo, pode ser uma coluna "sexo" contendo apenas "M" ou "F"), bem, na verdade, um FTS pode ser melhor que esse caso, porque você precisa recuperar o bloco de qualquer maneira para construir o conjunto de resultados. Agora digamos que sua tabela é 99% "M" e apenas 1% "F", devemos FTS em um caso ou usar um índice no outro. Mesma tabela, mesma consulta, potencialmente quatro planos de consulta diferentes, dependendo do conteúdo da tabela. Esses tipos de coisas são as "estatísticas" e são individuais para cada banco de dados - mesmo dois bancos de dados com tabela idêntica e estrutura de índice terão estatísticas diferentes.
Em resumo, em um mecanismo de banco de dados moderno, existem dois tipos de otimização de consulta: reescrever o SQL (otimização baseada em regras, como um compilador reescreve seu C para torná-lo mais eficiente) e escolher o caminho certo para os dados (otimização baseada em custo , como um compilador JIT identificando pontos de acesso em tempo de execução). Você só precisa se preocupar com isso se perceber que o otimizador de consulta está fazendo algo obviamente errado (por exemplo, escolher FTS quando você sabe que um índice seria melhor).
Eles são usados pelo otimizador de consulta (whitepaper no MSDN) para rastrear a distribuição de valores em índices e/ou colunas.
Sua única preocupação deve ser atualizar regularmente : apenas deixe o mecanismo de banco de dados fazer suas coisas