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.