Índice parcial - Partial index

Em bancos de dados , um índice parcial , também conhecido como índice filtrado, é um índice que possui alguma condição aplicada a ele para que inclua um subconjunto de linhas na tabela .

Isso permite que o índice permaneça pequeno, mesmo que a tabela seja bastante grande, e tenha extrema seletividade.

Suponha que você tenha uma tabela de transações onde as entradas começam com STATUS = 'A' (ativo) e, em seguida, podem passar por outros status ('P' para pendente, 'W' para "em execução") antes de atingir um status final, 'F', ponto em que não é mais provável que seja processado novamente.

No PostgreSQL, um índice parcial útil pode ser definido como:

create index partial_status on txn_table (status) 
where status in ('A', 'P', 'W');

Esse índice não se incomodaria em armazenar nenhum dos milhões de linhas que atingiram o status "final", 'F', e permitiria consultas em busca de transações que ainda "precisam de trabalho" para pesquisar com eficiência por meio desse índice.

Da mesma forma, um índice parcial pode ser usado para indexar apenas as linhas em que a coluna não é nula, o que será benéfico quando a coluna geralmente for nula.

create index partial_object_update on object_table (updated_on) 
where updated_on is not null;

Esse índice permitiria que a seguinte consulta lesse apenas as tuplas atualizadas:

select * from object_table 
where updated_on is not null 
order by updated_on;

Não é necessário que a condição seja igual ao critério do índice; O artigo de Stonebraker abaixo apresenta uma série de exemplos com índices semelhantes aos seguintes:

create index partial_salary on employee(age) 
where salary > 2100;

Apoio, suporte

No SQL Server , esse tipo de índice é chamado de índice filtrado . Índices parciais são suportados no PostgreSQL desde a versão 7.2, lançada em fevereiro de 2002. SQLite suporta índices parciais desde a versão 3.8.0.

MongoDB oferece suporte a índices parciais em sua versão mais recente V3.2.

O MySQL a partir da versão 8.0 não oferece suporte a índices parciais. No MySQL, o termo "índice parcial" às vezes é usado para se referir a índices de prefixo, onde apenas um prefixo truncado de cada valor é armazenado no índice. Esta é outra técnica para reduzir o tamanho do índice.

Referências

links externos