Pular para o conteúdo

Entendendo a utilização de Índices – Parte I

Entendendo a utilização de Índices

Salve Galera do Bem..!!!!

A um tempo atras eu estava procurando uma “apostila” de Sql Básico para passar a uma pessoa que me pediu, dentre os arquivos encontrados me deparei com um que me chamou muito a atenção pela didática com a qual ele foi escrito e o detalhamento de informações, então resolvi compartilhar o conteudo deste documento com vocês.. Mas devido ao conteudo ser um pouco extenso, vou faze-lo em partes.

Espero que desfrutem deste material…

1. Método de Acesso

Representa o tipo de acesso para obter os dados de uma determinada tabela. O Oracle possui os seguintes métodos:

1.1 Full Table Scan

• Realiza a leitura direta da tabela para determinar os registros que satisfazem a cláusula Where
• Permite o uso do multiblock I/O (leitura de vários blocos seqüenciais com um simples I/O)
• Permite a paralelização
• Nem sempre representa um método de acesso ruim

1.2 Table Access by Rowid

• Realiza o acesso a tabela pelo Rowid
• É a maneira mais rápida de acessar um registro

1.3 Index Scan

• Realiza o acesso aos dados através de um índice
• A maioria é do tipo b*-tree (padrão)

Estrutura interna da B*-tree

Full Scan: é usado quando a query usa pelo menos uma coluna do índice. Também é usado quando a consulta não possui predicado e se deseja evitar a operação de sort.

Fast Full Scan: é um Full Table Scan alternativo usado quando o índice possui todas colunas necessárias para a query. Para ler todos dados do índice, é mais rápido que o Index Scan por possibilitar o Multiblock I/O e a paralelização.
Obs: não pode ser usado para evitar a operação de sort (os dados não são retornados de forma ordenada).

Bitmap: utiliza um bitmap como chave para cada valor distinto da coluna e uma função de mapeamento que converte cada bit para um rowid. Se a coluna indexada tiver baixa cardinalidade, são rápidos e ocupam pouco espaço.

Obs: uma coluna é considerada de baixa cardinalidade se o número de valores distintos for menor ou igual a 1% do total de registros.

Exemplo: tabela Customer com 6 registros

Índice Bitmap sobre a coluna Region

Consulta de clientes casados e da região central e oeste.

SELECT COUNT(*) FROM customer
WHERE STATUS = 'married'
AND REGION IN ('central','west');

Bom.. espero q tenham gostado desta primeira parte, o documento possui um total de 4 partes.. caso tenham alguma dúvida.. basta postarem que irei fazer o máximo para auxiliar..!

Abraços Galera.. Ótimo dia a todos..!!

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 4.2 / 5. Contagem de votos: 6

Sem votos ! Seja o primeiro a classificar !

7 comentários em “Entendendo a utilização de Índices – Parte I”

  1. Avatar de Wagner Vinicius

    Fala Regis, belezura?!

    Parabéns pela abordagem, muito clara!
    Obs.: você tem falado com o Willians? Mandei um e-mail para ele, porém, não obtive resposta, precisamos retomar o “café” com GPO hehehehee

    Forte abraço

    Wagner Vinicius

  2. Avatar de Regis Araujo

    Fala Wagner, obrigado…

    Eu não tenho falado muito com o Will, mas pelo post q ele deixou no GPO, ele esta retornando as atividades, aos poucos.. creio que logo logo teremos mais café com GPO..!

    Abraços..!

    Regis Araujo

Deixe um comentário para Wagner Vinicius Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress