Encontrei muitas informações sobre o que STATISTICS
são: como elas são mantidas, como podem ser criadas manual ou automaticamente a partir de consultas ou índices e assim por diante. Porém, não consegui encontrar nenhuma orientação ou informações sobre "melhores práticas" sobre quandopara criá-los: quais situações se beneficiam mais com um objeto STATISTICS criado manualmente do que com um índice. Eu vi estatísticas filtradas criadas manualmente, ajudando as consultas em tabelas particionadas (porque as estatísticas criadas para os índices cobrem toda a tabela e não são por partição - brillaint!), Mas certamente deve haver outros cenários que se beneficiariam de um objeto de estatística enquanto sem precisar dos detalhes de um índice, nem valer o custo de manter o índice ou aumentar as chances de bloqueios / bloqueios.
@JonathanFite, em um comentário, mencionou uma distinção entre índices e estatísticas:
Os índices ajudarão o SQL a encontrar os dados mais rapidamente, criando pesquisas classificadas de maneira diferente da própria tabela. As estatísticas ajudam o SQL a determinar quanta memória / esforço será necessário para satisfazer a consulta.
Essa é uma ótima informação, principalmente porque me ajuda a esclarecer minha pergunta:
Como esse conhecimento (ou qualquer outra informação técnica sobre o que é e como s relacionadas com os comportamentos e natureza STATISTICS
) ajudam a determinar quando para escolher CREATE STATISTICS
ao longo CREATE INDEX
, especialmente quando a criação de um índice irá criar o relacionado STATISTICS
objeto? Qual cenário seria melhor atendido com apenas as informações ESTATÍSTICAS e sem o Índice?
Seria super útil, se possível, ter um exemplo prático de um cenário em que o STATISTICS
objeto se encaixa melhor que um INDEX
.
Como sou um aprendiz / pensador visual, achei que poderia ajudar a ver as diferenças entre STATISTICS
e INDEX
es, lado a lado, como um possível meio de ajudar a determinar quando STATISTICS
é a melhor escolha.
Thingy PROs CONs
------- ---------- -------------------
INDEX * Can help sorts. * Takes up space.
* Contains data (can * Needs to be maintained (extra I/O).
"cover" a query). * More chances for blocking / dead-locks.
STATISTICS * Takes up very little space. * Cannot help sorts.
* Lighter maintenance / won't * Cannot "cover" queries.
slow down DML operations.
* Does not increase chances
of blocking / dead-locks.
A seguir, alguns recursos que eu encontrei ao procurar isso, um que até faz a mesma pergunta, mas não foi respondido:
Índice do SQL Server vs estatística
Perguntas sobre estatísticas do SQL Server Estávamos com vergonha de perguntar
Estatisticas. Os histogramas de várias colunas são possíveis?
** Para ser claro, eu não tenho uma resposta para isso e, na verdade, estou procurando obter feedback de algumas pessoas, para fornecer o que parece estar estranhamente faltando informações aqui nas interwebs.