Recentemente, descobri um script gratuito fantástico das pessoas do BrentOzar Unltd
http://www.brentozar.com/blitzindex/
Isso faz uma boa análise de quais índices existem, com que frequência eles são usados e com que freqüência o mecanismo de consulta procura um índice que não existe.
Sua orientação geralmente é boa. Às vezes, as idéias são um pouco exageradas. Eu geralmente fiz o seguinte até agora:
- Índices removidos NUNCA foram lidos (ou talvez menos de 50 vezes por mês).
- Adicionado os índices mais óbvios em chaves e campos estrangeiros que eu sei que usamos muito.
Não adicionei todos os índices recomendados e voltei uma semana depois para descobrir que eles não são mais recomendados, pois o mecanismo de consulta está usando alguns dos outros novos índices!
Geralmente você deve evitar índices sobre:
- Tabelas muito pequenas (menos de 50 a 200 registros): geralmente o mecanismo de consulta é mais rápido se verifica a tabela em vez de carregar o índice, ler, processar etc.
- Evite índices em colunas com baixa cardinalidade ( http://en.wikipedia.org/wiki/Cardinality_(SQL_statements) ) na primeira coluna mencionada. Por exemplo, a indexação de um campo de gênero (M / F) é de pouca utilidade; é igualmente prático escanear a tabela e encontrar os ~ 50% correspondentes. Se estiver listado depois de algo mais específico no índice (por exemplo, [data de nascimento, sexo]), é melhor - você pode querer que todos os homens nascam em um determinado período de tempo.
Os índices agrupados são bons - normalmente, eles são baseados na sua chave primária. Eles ajudam o mecanismo de banco de dados a colocar os dados no disco em boa ordem. Muito essencial para entender isso nas tabelas maiores, pois um bom índice de cluster geralmente reduz o espaço que a tabela ocupa.
Reduzi algumas tabelas de 900 MB para 400 MB, apenas porque eram pilhas não estruturadas de antemão.
http://msdn.microsoft.com/en-us/library/aa933131(v=sql.80).aspx
Reorganizar / reconstruir
Você deve procurar índices fragmentados. Um pouco de fragmentação é bom, não fique obsessivo! http://technet.microsoft.com/en-us/library/ms189858.aspx Conheça a diferença entre reorganizar e recriar!
Revisar regularmente
As consultas mudam, os volumes de dados mudam, novos recursos são adicionados, os antigos removidos. Você deve procurá-los uma vez por mês (ou mais frequentemente, se tiver grandes volumes) e procurar onde você pode ajudar o banco de dados!
Quantos
Em um vídeo recente, Brent recomenda (normalmente) não mais de 5 índices em uma tabela com muita escrita (por exemplo, tabela de pedidos) e não mais que 10 se for lido muito mais do que escrito (por exemplo, tabela de registro para análise) http: / /www.youtube.com/watch?v=gOsflkQkHjg
No geral
Depende!
Sua milhagem varia de acordo com o banco de dados. Cubra o óbvio (sobrenome do funcionário, data do pedido, etc.) em suas tabelas maiores (agora / futuras). Monitore, revise e ajuste conforme necessário. Ele deve fazer parte da sua lista de verificação de rotina ao gerenciar seus bancos de dados :)
Espero que isto ajude!