Banco de Dados Dicas Rápidas

Entendimento para SQL Server – Parte 1

Escritor por Victor Amemiya

FAAAAALA PESSOAL!!!

Tudo bom?!

O artigo de hoje será outra dica rápida relacionada à banco de dados. São algumas boas práticas importantes para o pessoal que utiliza o banco de dados SQL Server junto com o Protheus.

Os principais assuntos que abordaremos neste artigo é: Indexação de tabelas, Fator de preenchimento (FillFactor) e análise de plano de execução de consultas SQL.

Vamos lá:

Índices

Índices são estruturas que possuem algoritmos otimizados para acessar dados em um banco de dados. A principal função do índice é diminuir o número de operação de leitura e escrita necessários para localizar os dados solicitados por uma consulta. Quando um índice não é utilizado, o banco de dados precisa realizar uma operação chamada Table Scan, para poder encontrar os dados necessários. A Table Scan é a leitura integral da tabela, registro a registro, esta ação implica em um gasto de processamento muito maior. Vale lembrar que a operação de leitura e escrita em disco são normalmente bastante lentas em relação a operação de leitura e escrita na memória.

Qualquer coluna pode ser utilizada para compor o corpo do índice. A sequencia de composição desta formação é utilizada como ordem de classificação das informações contidas na própria tabela. Esta referência, é conhecida como ponteiro.

Agora que já sabemos o que são os índices, vamos aprofundar um pouco mais o conhecimento.

Existem dois tipos principais de índices no SQL Server, estes, serão comentados abaixo:

 Index Clustered (Índice Clusterizado)

Um clustered index armazena os dados ordenados de acordo com os valores do campo onde o índice foi definido. Ao definir um clustered index, o mesmo organiza os dados da página de acordo com sua chave. Neste caso, o índice está alterando a ordem aleatória da tabela. Este tipo de índice é bastante eficiente para agilizar as operações de localização de registros.

Somente podemos ter um clustered index por tabela, pois só poderemos armazenar os dados em ordem de um determinado critério.

Embora o índice melhore o desempenho das consultas, existe um pequeno “excesso” para operações de atualização, inserção e exclusão de registro, pois estas operações podem fazer com que a ordem dos registros seja alterada, e que estes tenham que ser reposicionados para manter a ordem definida pelo índice.

As tabelas do Protheus possuem o índice clusterizado ordenados pelo campo R_E_C_N_O_ de maneira crescente.

Fique atualizado, É GRÁTIS!
Cadastre o seu endereço de e-mail e fique por dentro de todas as atualizações da AcademiaERP.
Não enviamos spam.

Index Non-Clustered (Índice Não Clusterizado)

Este tipo de índice não altera a ordem da tabela. Ao invés disso, os registros estarão armazenados em uma ordem aleatória, entretanto, poderão ser facilmente localizado através do ponteiro.

A utilização desse tipo de índice é indicada quando os dados podem ser pesquisados por diferentes critérios, uma vez que podemos criar vários nonclustered index em uma tabela.

Index Key (Chave de índice)

Este é o termo que utilizamos para referir-se às colunas utilizadas na definição do índice. A chave do índice é o conjunto de campo, em ordem, que utilizamos para localizar um registro.

Para ilustrar esta explicação, vamos utilizar como exemplo a tabela SA1 do Protheus.

O índice 1 é formado pela Index Key a seguir: A1_FILIAL, A1_COD, A1_LOJA,R_E_C_N_O_, D_E_L_E_T_

Index Uniqueness (Unicidade de índice)

Neste caso, não há unicidade nos valores armazenados. Um índice não único permite valores repetidos para a INDEX KEY, entretanto, quanto mais dados repetidos armazenados, menos efetivo será o índice no momento de localizar um registro específico.

Sobre o Autor

Victor Amemiya

Faaaaaala galera, tudo bom? Eu sou o Victor, formado em GSI pela Faculdade Impacta de Tecnologia. Minha praia é desenvolvimento, mas também gosto muito de banco de dados. Tem alguma dúvida, crítica ou sugestão? Me envie um e-mail: victor.amemiya@optera.com.br

Deixe um comentário

Dúvida?