ÍNDICES E ESTATÍSTICAS


Hoje, me deparei com uma dúvida de um dos participantes do fórum "FÓRUM DA RM" e essa dúvida era sobre como funcionavam os índices e estatísticas.

 

Vou tentar, explicar como funcionam as estatísticas e os índices. Primeiramente, vou me abster a contextualizar sobre os diferentes tipos de índices (clustered, nonclustered e unique), prometo que meu próximo assunto abordado dará ênfase aos tipos de estatísticas e como criá-los.

Os índices de uma tabela são como os índices de um livro, eles indicam onde encontrar o que você está procurando.

O SQL permite criar vários índices em uma mesma tabela, de forma que você pode organizar os dados na ordem que quiser, exemplo:
se você cria um índice que organiza os dados por data, no momento que realiza consultas por data, o resultado será o melhor possível, pois o SQL irá utilizar o índice que você criou por data.

Se criar outro índice que organiza a tabela por código do movimento, quando realizar consultas que pesquisem por ordem de código de movimento, a consulta irá ser rápida, pois os índices irão apontar para as informações de forma correta.

Mas, como o SQL sabe qual índice utilizar quando você está realizando uma consulta em uma tabela que possui mais de um índice?

Resposta: ESTATÍSTICAS!!!

As estatísticas são contadores que informam para o SQL quais são os melhores índices ou os índices mais rápidos. O SQL sabe quais são os melhores índices baseado num contador sobre os campos que compõem os índices, os índices que possuem campos com maior seletividade são escolhidos e a consulta executa feito uma BALA!!!
Para isso, você deve criar estatísticas para os índices, não adianta ter índices sem uma boa estatísticas.

Realizando uma verificação do plano de execução de qualquer consulta, você pode verificar a inexistência de índice e criá-los. Outra forma é o Index Tuning wizard(SQL2000) ou o DTA(SQL2005), que sugere ou cria índices e estatísticas automaticamente.

O FullScan comentado pelo colega Mafra, só é realizado quando não existem índices para os dados que estão sendo pesquisados, quando as estatísticas não existem, são ineficientes ou estão desatualizadas. Pra ver como a falta de estatísticas é crucial, imagine a seguinte situação:

Você chega em uma biblioteca e vai procurar o assunto "Atualização de estatísticas" pesquisando nos índices de todos os livros de informática relacionados com banco de dados, até encontrar um livro que tenha o assunto no índice pode demorar bastante. Apesar de todos os livros possuírem índices isso não quer dizer que você irá encontrar rapidamente o que quer.

Agora, se a biblioteca possui uma estatística, onde você pode realizar a seguinte consulta: quais os livros que possuem o assunto "Atualização de estatísticas" no índice? Se existir essa estatística, você irá direto para os livros certos, sem perder muito tempo.

Se, por acaso, não existirem as estatísticas, você até pode encontrar os livros que contém o assunto, porém, se não existir nem estatística e nem índices, você estará perdido! Terá que verificar todas as folhas de todos os livros para encontrar o assunto "Atualização de estatísticas”, rsrsrsrs.

Então, tão importante quanto criar índices e estatísticas é a manutenção delas. Realize, diariamente, reindexação dos índices de todas as tabelas e atualize as estatísticas também para todos os objetos.

 

Espero ter lhe ajudado,

 

Emanuel Peixoto.

 

 

 

Emanuel Peixoto

* Capitão do Exército Brasileiro (QCO/Informática/2011)
* Formado em Sistemas de Informação.
* Criador do blog “Rumo à EsFCEx”
* Chefe da Seção de Informática do Hospital Militar de Área de Recife
* Profissional com mais de 15 anos de experiência na área de TI,atuando como Engenheiro de Sistemas e DBA
* Microsoft Certified – MCDBA | MCSE | MCSA | MCITP | MCTS
* IBM Certified Developer – Cognos 8 BI Data Warehouses
* ITIL® V2 e V3
* Green IT Citizen
* ISO/IEC 27002

http://www.mycertprofile.com/Profile/1915602619
http://www.mycertprofile.com/Profile/1915602619

Facebook Twitter LinkedIn Google+ YouTube