O catálogo pg_am armazena informações sobre os métodos de acesso de índice. Existe uma linha para cada método de acesso de índice suportado pelo sistema.
Tabela 42-3. Colunas de pg_am
Nome | Tipo | Referencia | Descrição |
---|---|---|---|
amname | name | Nome do método de acesso | |
amowner | int4 | pg_shadow.usesysid | ID de usuário do dono (atualmente não utilizado) |
amstrategies | int2 | Número de estratégias do operador para este método de acesso | |
amsupport | int2 | Número de rotinas de suporte para este método de acesso | |
amorderstrategy | int2 | Zero se o índice não oferece ordem de classificação, senão o número da estratégia do operador de estratégia que descreve a ordem de classificação | |
amcanunique | bool | O método de acesso suporta índices únicos? | |
amcanmulticol | bool | O método de acesso suporta índices de várias colunas? | |
amindexnulls | bool | O método de acesso suporta entradas de índice nulas? | |
amconcurrent | bool | O método de acesso suporta atualizações simultâneas? | |
amgettuple | regproc | pg_proc.oid | Função "próxima tupla válida" |
aminsert | regproc | pg_proc.oid | Função "inserir esta tupla" |
ambeginscan | regproc | pg_proc.oid | Função "começar nova varredura" |
amrescan | regproc | pg_proc.oid | Função "recomeçar esta varredura" |
amendscan | regproc | pg_proc.oid | Função "terminar esta varredura" |
ammarkpos | regproc | pg_proc.oid | Função "marcar a posição corrente da varredura" |
amrestrpos | regproc | pg_proc.oid | Função "restaurar a posição de varredura marcada" |
ambuild | regproc | pg_proc.oid | Função "construir novo índice" |
ambulkdelete | regproc | pg_proc.oid | Função "apagar em massa" (bulk-delete) |
amvacuumcleanup | regproc | pg_proc.oid | Função de limpeza pós-VACUUM |
amcostestimate | regproc | pg_proc.oid | Função para estimar o custo da varredura de índice |
Um método de acesso de índice que suporta várias colunas (possui amcanmulticol verdade) deve suportar a indexação de valores nulos nas colunas após a primeira, porque o planejador assume que o índice pode ser utilizado para comandos acessando apenas a(s) primeira(s) coluna(s). Por exemplo, considere um índice em (a,b) e um comando com WHERE a = 4. O sistema assume que o índice pode ser utilizado para ser varrido à procura de linhas com a = 4, o que estaria errado se o índice omitisse as linhas onde b é nulo. Entretanto, não há problema se o índice omitir as linhas onde a primeira coluna indexada for nula (atualmente o GiST faz assim). amindexnulls deve ser definida como verdade somente se o método de acesso do índice indexar todas as linhas, incluindo combinações arbitrárias de valores nulos.