NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Você está em: PrincipalArtigosSQL Server 2005 › Capítulo 04 : 11
Quer receber novidades e e-books gratuitos?
« Lição anterior Curso Completo de SQL Server 2005 - Júlio Battisti Δ Página principal Curso Completo de SQL Server 2005 - Júlio Battisti ¤ Capítulos Curso Completo de SQL Server 2005 - Júlio Battisti Próxima lição »
SQL Server 2005 - CURSO COMPLETO
Autor: Júlio Battisti
Lição 059 - Capítulo 04 - CLUSTERED INDEX

Um Clustered Index ordena os dados de acordo com os valores do campo onde o índice foi definido. Os dados são armazenados na própria tabela. Neste caso, o índice está alterando a ordem em que os registros são armazenados na própria tabela, ao invés de uma ordem aleatória (utilizado no caso de não termos índices), os registros são armazenados em uma ordem definida pelo índice. Este tipo de índice é bastante eficiente para agilizar 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 (não tem como armazenar o mesmo conjunto de dados em duas ou mais ordens diferentes. Por isso que só podemos ter um Clustered Index, por tabela). Observe que embora o índice melhore o desempenho das consultas, existe um pequeno “overhead” para operações de atualização, inserção e exclusão de registros, 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.

Os índices no SQL Server 2005 são organizados em uma estrutura semelhante a uma árvore de cabeça para cima, as chamadas B-trees. Os dados são divididos em páginas (na verdade o SQL Server 2005 armazena os dados de uma tabela divididos em páginas de 8 KB). Cada página de um Clustered Index possui um cabeçalho que identifica a página mais as linhas do índice (Index Rows). Cada linha do índice contém um valor-chave e um ponteiro para outra página do índice ou para um registro de dados. Cada página do índice é chamada de nó – Index Node. O primeiro nó da árvore é chamado de nó raiz – Root Node. O último nível ou camada de nós é chamado de nós folhas – Leaf Nodes. Entre o nó raiz e o último nível, podemos ter diversos níveis intermediários. As páginas de cada nível são ligadas em forma de uma lista duplamente encadeada. As páginas com dados são as páginas ou nós folhas (Leaf Nodes).

Na Figura 4.18, retirada do Books OnLine, temos uma ilustração da estrutura de um Clustered Index.

Curso Completo de SQL Server 2005 - Júlio Battisti
Figura 4.18 A estrutura em forma de B-tree de um Clustered Index.

Os dados encontram-se nas chamadas Leaf Pages, as demais páginas do índice (também conhecidas como Non-Leaf Pages) contêm informações que facilitam a localização dos dados contidos nas Leaf Pages.

Para entender o funcionamento de um Clustered Index, vamos observar como um determinado registro é localizado, utilizando a estrutura de um Clustered Index. Considere o exemplo da Figura 4.19.

Curso Completo de SQL Server 2005 - Júlio Battisti
Figura 4.19 Acessando dados com um Clustered Index.

Vamos supor que você queira localizar o registro para o cliente Raul. O SQL Server 2005 fará o seguinte:

  • Ao receber a pesquisa, o SQL Server detecta a existência de um índice na coluna nome e que a utilização deste índice auxiliará no processo de pesquisa. Então, utiliza um mecanismo interno para preparar um “Plano de Execução” para uma determinada consulta (esta decisão sobre a utilização ou não do índice e se esse uso irá melhorar o desempenho da consulta é tomado internamente, pelo mecanismo de banco de dados do SQL Server 2005). Este plano procura determinar qual a maneira mais rápida de executar a consulta. Neste caso, o SQL Server 2005 determina que a melhor maneira é através da utilização do índice.
  • Nas páginas do índice (Non-Leaf Pages), a pesquisa inicia na página root (125). O valor procurado Raul vem depois do último valor desta página, que é Marcos. Com isso a pesquisa prossegue para a página “apontada pela página 125”, que no caso é a página 127.
  • A pesquisa continua na página de índice 127. Nesta página, o valor Raul está na faixa entre Marcos e Silvano. Agora a pesquisa é deslocada para a página de dados em que o primeiro registro começa com Marcos (página 60), conforme indicado pelas flechas da Figura 4.19.
  • Agora a pesquisa já alcançou o nível dos dados (Leaf Pages) e está na página que contém o registro procurado. A página 60 será percorrida seqüencialmente, até localizar o registro para o usuário Raul. Observe que o número de operações de leitura foi bastante reduzido com a utilização do índice, em comparação à situação em que tivéssemos que fazer uma varredura de todos os registros da tabela, até encontrar o registro procurado (o que teria que ser feito, caso não existisse o índice).

Este exemplo ilustra o quanto os índices podem melhorar o desempenho das consultas. Como regra geral devemos criar Clustered Indexes em colunas que são freqüentemente utilizadas como critério para pesquisas. Por exemplo a coluna NomeCliente de uma tabela de Clientes ou campo NúmeroDoPedido da tabela Pedidos e assim por diante.

Ao criarmos Clustered Indexes (aprenderemos a criá-los mais adiante neste capítulo), devemos considerar os seguintes fatos:

  1. Conforme descrito anteriormente, cada tabela pode conter apenas um Clustered Index.
  2. A ordem física das linhas da tabela (Leaf Nodes) e das linhas do índice (Non-Leaf Nodes) é a mesma. Caso queiramos utilizar um Clustered Index e um Nonclustered Index na mesma tabela, devemos criar o Clustered Index primeiro, uma vez que esta modifica a ordem dos registros na tabela.
  3. Os valores da chave em um Clustered Index devem ser únicos. Isto é possível com a utilização da palavra UNIQUE na criação do índice, conforme veremos mais adiante. Se não utilizarmos a palavra UNIQUE, o SQL Server adicionará um identificador interno o qual será único para cada chave do índice. Este identificador interno é de 8 bytes e é somente para uso do SQL Server, não podendo seus valores serem acessados pelo usuário através de um comando SELECT, por exemplo.
  4. De uma maneira geral, o espaço em disco ocupado por um Clustered Index é cerca de 5% do tamanho da tabela. Este percentual varia, dependendo do tamanho da coluna que está sendo indexada.
  5. Durante o processo de criação do índice o SQL Server ocupa, temporariamente, espaço em disco. A criação de um Clustered Index requer cerca de 1,2 vezes o tamanho da tabela que está sendo indexada. Este espaço é liberado após a criação do índice. Caso o seu Banco de Dados não permita o crescimento automático dos arquivos que o compõem e não exista este espaço disponível, o índice não poderá ser criado.
« Lição anterior Curso Completo de SQL Server 2005 - Júlio Battisti Δ Página principal Curso Completo de SQL Server 2005 - Júlio Battisti ¤ Capítulos Curso Completo de SQL Server 2005 - Júlio Battisti Próxima lição »

você conhece a universidade do access?

Universidade do Access - Curso Completo de Access
com tudo para você dominar o Access - do Básico ao
Avançado - até a Criação de Sistemas Profissionais
Completos - Passo a Passo - Tela a Tela

Capa da Universidade do Access

Aplica-se ao Access 2019, 2016, 2013 e 2010!

13 Cursos - 574 Vídeo-Aulas - 63:32 horas

Para todos os detalhes, acesse:

https://juliobattisti.com.br/universidade-do-access.asp

Quer receber novidades e e-books gratuitos?

 
 

Contato: Telefone: (51) 3717-3796 | E-mail: webmaster@juliobattisti.com.br | Whatsapp: (51) 99627-3434

Júlio Battisti Livros e Cursos Ltda | CNPJ: 08.916.484/0001-25 | Rua Vereador Ivo Cláudio Weigel, 537 - Universitário, Santa Cruz do Sul/RS, CEP: 96816-208

Todos os direitos reservados, Júlio Battisti 2001-2025 ®

LIVRO: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2016 - CURSO COMPLETO E PRÁTICO

DOMINE A PROGRAMAÇÃO VBA NO EXCEL - 878 PÁGINAS - CLIQUE AQUI