um ponto de nivelamento de conhecimentos. Existem dois tipos de indices no SQL Server quanto a forma de armazenamento dos dados para otimizacao de consulta:Indices clusterizadosNormalmente representam o principal indice e que e usado para a chave primaria da tabela. Neste tipo, alem busca ser feita nas colunas que compoem a chave primaria, todas as colunas da tabela sao armazenadas pelo indice. Desta forma, ao realizar uma busca por este tipo de indice, apenas uma varredura e feita e qualquer que seja a coluna necessaria para recuperar o dado estara armazenada no indice. As tabelas do SQL Server so podem ter um indice clusterizado por tabela (pelo menos ate a versao 2014).Indices nao clusterizadosVia de regra, sao todos os demais tipos de indice.Neste tipo sao armazenadas as colunas usadas para a busca e a chave primaria.Ao realizar a busca, caso o indice tenha sido feito da forma padrao, duas varreduras sao feitas no banco de dados, a primeira passa pelas colunas indexadas comparando o valor passado por argumento. Uma vez encontrado, o valor da chave primaria e armazenado. Caso as colunas que estejam sendo recuperadas pela clausula SELECT nao estejam armazenadas, o mecanismo percorre o indice clusterizado, buscando a chave primaria para obter o valor das demais colunas.Mas isto nao precisa ser sempre deste jeito. No SQL Server e possivel atraves da clausula INCLUDE especificar quais colunas serao armazenadas para agilizar a busca. Caso estas estejam especificadas na clausula SELECT, somente uma varredura e feita.A sintaxe basica para se criar um indice deste tipo e a demonstrada na sequencia:CREATE INDEX <NOME>ON <TABELA>(Coluna1, coluna2, ..., ColunaN)INCLUDE(Coluna1, coluna2, ..., ColunaN)Existem consideracoes a fazer sobre este tipo de indice:Quanto mais colunas, mais espaco de armazenamento sera necessarioE possivel ter um grande numero destes indices no bancoE importante realizar um estudo de desempenho para criar apenas os indices necessarios e adequados as consultas que sao comumente executadas.Quanto maior o numero de indices, menor o tempo de resposta das consultas e maior o tempo de atualizacao pois cada UPDATE, DELETE e INSERT dispara atualizacoes nos indices.A criacao de indices e um assunto que precisa ser profundamente estudado. Este conteudo resumido serve apenas para alertar quais as principais causas de gargalos de desempenho nas consultas e por onde comecar a fazer sua pesquisa.O principal aspecto a ser considerado para se ter um banco de dados com bom desempenho e incluir esta questao no momento de se fazer o projeto do banco e escolher de maneira mais correta qual arquitetura devera ser usada.Este post encerra a serie de topicos basicos para se usar consultas com o SQL Server. Espero ter colaborado de alguma forma para o seu aprendizado. Fique atento, sempre estou publicando atualizacoes neste blog. Deixo abaixo links para mais referencias e o indice de todos os itens do treinamento.ReferenciasCriacao de indices Full Text IndexIndice dos treinamentos desta serie Introducao Elementos basicos JOINS JOINS e o desempenho LEFT JOINS Outros tipos de JOINS WHERE UNION FUNCTIONS CASE Sub consultas FOR XML Medidas de seguranca iniciais