Já ouvi menção 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?
fonte
Já ouvi menção 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 ajudam 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 acessar um índice para fazer uma pesquisa; você sempre estará melhor fazendo uma verificação completa da tabela. Mas se a mesma tabela aumentar para um milhão de linhas, provavelmente será melhor usar o índice. Mas se você consultar essa tabela em uma coluna que possui apenas muito poucos valores exclusivos (por exemplo, pode ser uma coluna "sex" contendo apenas "M" ou "F"), bem, na verdade, um STF pode ser melhor nesse caso, porque você precisa recuperar o bloco de qualquer maneira para criar o conjunto de resultados. Agora diga que sua tabela é 99% "M" e apenas 1% "F", devemos STF 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 - até dois bancos de dados com tabela e estrutura de índice idênticas 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 custos , como um compilador JIT que identifica pontos de acesso em tempo de execução). Você só precisa se preocupar com isso se detectar que o otimizador de consultas está fazendo algo obviamente errado (por exemplo, escolhendo o STF quando souber que um índice seria melhor).
Eles são usados pelo otimizador de consulta (white paper no MSDN) para rastrear a distribuição de valores em índices e / ou colunas.
Sua única preocupação deve ser a atualização regular : basta deixar o mecanismo do DB fazer suas coisas
fonte