Precisa saber como o PostgreSQL ordena os registros no disco. Nesse caso, gostaria de aproveitar a combinação de índices conforme indicado no docs , que, pelo que entendi, usa bitmaps para obter linhas correspondentes e retorná-las de acordo com sua localização física. A tabela em questão foi agrupada por sua chave primária.
Pelo que entendi, o PostgreSQL não continua automaticamente fazendo clustering depois que um clustering é concluído (embora lembre-se de que ele foi clusterizado de acordo com um determinado índice). Agora, como essa é a chave primária, gostaria de saber se a ordem de armazenamento físico seria de acordo com isso (que, se for verdade, gostaria de usar a nosso favor para uma consulta específica).
Em resumo, como o PostgreSQL ordena seus novos registros, especialmente após o agrupamento?
Muito obrigado!
As linhas no postgresql não têm ordem fixa. Os registros não são apenas colocados onde quer que haja espaço livre, os registros também podem se mover. Isso ocorre porque, quando uma linha é atualizada, uma nova versão da linha é criada em um novo local, enquanto a versão antiga continua a residir em seu local antigo até ser removida pelo vácuo.
Uma operação CLUSTER classifica todas as linhas, mas de fato não afeta como o postgresql adiciona as linhas. Portanto, os dados não ficarão classificados. No entanto, o postgresql mantém estatísticas entre as quais está a correlação para cada coluna entre a ordem das linhas nas tabelas e a ordem classificada dessa coluna. Portanto, o planejador ainda pode otimizar seu plano com base nas estatísticas que informam que a tabela ainda está classificada, mesmo que algumas linhas tenham sido adicionadas após uma operação de cluster (ou tenham sido movidas por atualizações).