52.26. pg_index #

O catálogo pg_index contém parte das informações sobre índices. O restante se encontra principalmente em pg_class.

Tabela 52.26. Colunas de pg_index

Coluna Tipo de dados

Descrição

indexrelid oid (referencia pg_class.oid)

OID da entrada em pg_class para este índice

indrelid oid (referencia pg_class.oid)

OID da entrada em pg_class da tabela para a qual este índice se destina

indnatts int2

O número total de colunas no índice (duplica pg_class.relnatts); este número inclui os atributos chave e os incluídos

indnkeyatts int2

O número de colunas-chave no índice, sem contar quaisquer colunas incluídas, que são meramente armazenadas e não participam da semântica do índice

indisunique bool

Se verdade, este é um índice de unicidade

indnullsnotdistinct bool

Este valor é usado apenas para índices de unicidade. Se falso, este índice de unicidade irá considerar os valores nulos como distintos. (assim, o índice pode conter vários valores nulos em uma coluna, o que é o comportamento padrão do PostgreSQL). Se verdade, irá considerar os valores nulos como iguais (portanto, o índice só pode conter um valor nulo em uma coluna).

indisprimary bool

Se verdade, este índice representa a chave primária da tabela (indisunique deverá sempre ser verdade quando este for verdade)

indisexclusion bool

Se verdade, este índice dá suporte a uma restrição de exclusão

indimmediate bool

Se verdade, a verificação de unicidade será aplicada imediatamente na inserção (irrelevante se indisunique não for verdade)

indisclustered bool

Se verdade, a tabela foi agrupada na última vez por este índice

indisvalid bool

Se verdade, o índice está no momento válido para consultas. Falso significa que o índice está possivelmente incompleto: ele ainda deve ser modificado por operações de INSERT/UPDATE, mas não pode ser usado com segurança para consultas. Se for de unicidade, a propriedade de unicidade também não será garantida como verdadeira.

indcheckxmin bool

Se verdade, as consultas não deverão usar o índice até que o xmin dessa linha de pg_index esteja abaixo do seu horizonte de eventos TransactionXmin, porque a tabela poderá conter cadeias de Heap-Only Tuples quebradas com linhas incompatíveis que podem ser vistas

indisready bool

Se verdade, o índice está no momento pronto para inserções. Falso significa que o índice deve ser ignorado pelas operações de INSERT/UPDATE.

indislive bool

Se falso, o índice está em processo de exclusão, devendo ser ignorado para todos os efeitos (incluindo decisões de segurança de HOT)

indisreplident bool

Se for verdade, este índice foi escolhido como identidade da réplica usando ALTER TABLE ... REPLICA IDENTITY USING INDEX ...

indkey int2vector (referencia pg_attribute.attnum)

Esta é uma matriz de valores indnatts que indicam quais colunas da tabela este índice indexa. Por exemplo, um valor 1 3 significaria que a primeira e a terceira colunas da tabela constituem as entradas do índice. As colunas-chave vêm antes das colunas não-chave (incluídas). Um zero nesta matriz indica que o atributo de índice correspondente é uma expressão sobre as colunas da tabela, em vez de uma simples referência de coluna.

indcollation oidvector (referencia pg_collation.oid)

Para cada coluna na chave de índice (valores indnkeyatts), contém o OID da ordenação a ser usada para o índice, ou zero se a coluna não for de um tipo de dados ordenável.

indclass oidvector (referencia pg_opclass.oid)

Para cada coluna na chave do índice (valores indnkeyatts), contém o OID da classe de operador a ser usada. Veja pg_opclass para obter detalhes.

indoption int2vector

Esta é uma matriz de valores indnkeyatts que armazena bits sinalizadores por coluna. O significado dos bits é definido pelo método de acesso do índice.

indexprs pg_node_tree

Árvores de expressão (na representação nodeToString()) para atributos do índice que não são simples referências de coluna. Esta é uma lista com um elemento para cada entrada zero em indkey. Nulo se todos os atributos do índice forem simples referências.

indpred pg_node_tree

Árvore de expressões (na representação nodeToString()) para os predicados de índice parcial. Nulo se não for um índice parcial.


Exemplo 52.17. Exemplo do tradutor

Índices das tabelas

Uso do catálogo pg_index para mostrar os índices das tabelas da usuária ana. Note o uso de aspas para delimitar valores contendo letra não ASCII.

ana=> SELECT indexrelid::regclass::text AS "Índice",
ana->        indrelid::regclass::text AS "Tabela"
ana-> FROM pg_index
ana-> WHERE indrelid::regclass::text NOT LIKE 'pg%';

       Índice       |     Tabela
--------------------+-----------------
 autor_pkey         | autor
 literatura_pkey    | literatura
 estados_pkey       | estados
 wrd_word           | wrd
 wrd_trgm           | wrd
 pk_sapato_dados    | sapato_dados
 pk_unidade         | unidade
 produtos_pkey      | produtos
 produto_pkey       | produto
 "pk_cadarço_dados" | "cadarço_dados"
(10 linhas)


52.26.1. Veja também #

CREATE INDEX, ALTER INDEX, DROP INDEX, REINDEX