Artigo SQL Magazine 37 - Índices no Oracle - Parte 2

Artigo da Revista SQL Magazine - Edição 37.

Clique aqui para ler esse artigo em PDF.

Clique aqui para ler todos os artigos desta edição

Índices no Oracle - Parte 2

 

Em continuidade à primeira parte do artigo sobre índices, publicado na edição 36 da revista SQL Magazine, abordarei novos aspectos referentes à utilização de índices no Oracle.

Veremos os conceitos sobre índices particionados, uma visão geral sobre o gerenciamento de índices e finalizo o artigo falando um pouco sobre tuning de uma maneira prática, através de um teste real.

 

Índice particionado

O conceito de índice particionado ou índice segmentado nada mais é do que uma alternativa oferecida pelo Oracle para as tabelas particionadas ou segmentadas (Nota 1). Existem dois tipos de índices particionados:

 

 

·LOCAL: todas as entradas de índice em uma única partição corresponderão a uma única partição da tabela. São criados com a cláusula LOCAL e suportam a partição de forma independente. Essa independência garante uma melhor eficiência do Oracle na maioria das vezes.

·GLOBAL: neste caso, o índice criado em um único segmento suporta as múltiplas partições da tabela. São criados com a cláusula GLOBAL e não suportam de forma independente cada partição. Os índices globais só podem ser utilizados em tabelas particionadas por 'RANGE'.

 

A Listagem 1 mostra a criação de tabelas particionadas utilizando os três métodos e também a criação de índices particionados utilizando os dois conceitos, global e local.

 

Listagem 1. Criação de tabela particionada e respectivos índices global e local.

 

--Tabela particionada por RANGE.

CREATE TABLE PART.sales_range

   (salesman_id NUMBER(5),

salesman_name VARCHAR2(30),

sales_amount NUMBER(10),

sales_date DATE)

   PARTITION BY RANGE(sales_date)

(PARTITION sales_jan2006 VALUES LESS THAN(TO_DATE(‘31/01/2006’,’DD/

MM/YYYY’)),

   PARTITION sales_feb2006 VALUES LESS THAN(TO_DATE(‘28/02/2006’,’DD/

MM/YYYY’)),

   PARTITION sales_mar2006 VALUES LESS THAN(TO_DATE(‘31/03/2006’,’DD/

MM/YYYY’)),

   PARTITION sales_apr2006 VALUES LESS THAN(TO_DATE(‘30/04/2006’,’DD/

MM/YYYY’)));

 

--Tabela particionada por LIST

CREATE TABLE PART.sales_list

"
[...] continue lendo...
Ebook exclusivo
Dê um upgrade no início da sua jornada. Crie sua conta grátis e baixe o e-book

Artigos relacionados