Criação de índices

23 views
Skip to first unread message

Daniela Eler

unread,
Aug 17, 2012, 8:04:10 AM8/17/12
to sql-serv...@googlegroups.com
Olá pessoal,
alguém conhece algum livro ou artigo que explique com mais detalhes sobre dicas de criação de índices, estou num dilema danado, muito artigos que li falando sobre a criação de muitos índices em uma tabela é prejudicial por causa das operações de insert/update/delete, mas no ambiente em que trabalho é necessário a criação de vários índices para a tabela, pois cada consulta utiliza campos diferentes (alguns em conjunto), por tanto preciso desses índices por causa da performance das consultas.

Outra dúvida que tenho é em relação ao índices clustered, qual a real vantagem desse índice? Apenas em consulta que realizam filtros pelo campo do índice clustered? Quando realizo alguma operação de insert/update apenas a chave é ordenada ou todos os campos do índice?
Tenho uma tabela enorme que tem um índice clustered e estou filtrando registros por outro campo diferente da chave do índice, demora muito para retornar e ao criar um índice específico por esse campo a consulta retorna super rápido.


desde já, obrigada

Jefferson Montija Cirilo

unread,
Aug 17, 2012, 9:16:06 AM8/17/12
to sql-serv...@googlegroups.com

Bom dia Daniela,

 

Realmente no ambiente transacional é complicado a criação de muitos índices, porém uma das melhores maneiras (uma das melhores, não a única) de aumentarmos a performance de nossas consultas são com índices.

 

Imagine uma tabela com muitos índices e a cada insert/delete ou update (desde que a coluna esteja indexada) o SQL deve atualizar as páginas dos índices. Por isso que quanto maior a quantidade de índices por tabela em ambiente transacional você terá um custo maior. Sem contar o tamanho do arquivos com índice armazenado, I/O, etc...

 

Muitas vezes conseguimos mudar a consulta e utilizar um índice existente sem a necessidade de criamos outro, mas cada caso merece uma análise diferente. Suponho que você já tenha feito isso.

 

Uma opção muito interessante para reduzir o número de índices é usar índex INCLUDE (Covered-Index).  Dá uma pesquisada sobre isso que é bem interessante e qualquer coisa voltamos a falar sobre ele.

 

Se a opção de separar a base transacional da base de consulta está descartada, seja por motivos de hardware, aplicação ou gerenciamento... Seria uma medida mais extrema.

 

Por aí você vê as possibilidades para saber onde pode chegar.

 

Sobre o índice cluster vou precisar de um pouco mais de tempo para descrever sobre ele. Vou tentar postar algo a respeito e passo o link para você.

 

A Sr.Nimbus tem um treinamento (inclusive com uma versão online) sobre indexação.

Um texto legal sobre indexação: http://www.sqlservercentral.com/articles/Indexing/68439/

 

Espero ter ajudado em algo.

 

Abraços,

Jefferson

--
----------------------
Você recebeu essa mensagem porque você esta inscrito no grupo "SQL Server Brasil" do Google Groups.
Para postar nesse grupo, envie mensagem para sql-serv...@googlegroups.com
Para sair desse grupo, envie mensagem para sql-server-bra...@googlegroups.com
Para mais opções, visite a página desse grupo em http://groups.google.com/group/sql-server-brasil
----------------------
You received this message because you are subscribed to the Google Groups "SQL Server Brasil" group.
To post to this group, send email to sql-serv...@googlegroups.com
To unsubscribe from this group, send email to sql-server-bra...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sql-server-brasil

Reply all
Reply to author
Forward
0 new messages