Para teste propósitos, você pode forçar o uso do índice "desativando" varreduras sequenciais - melhor apenas na sua sessão atual:
SET enable_seqscan = OFF;
não use isso em um servidor produtivo. Detalhes no manual aqui.
Eu citei "desabilitando", porque você não pode realmente desabilitar as verificações de tabela sequencial. Mas qualquer outra opção disponível agora é preferível para o Postgres. Isso provará que o índice de várias colunas em
(metric_id, t)
pode ser usado - mas não tão eficaz quanto um índice na coluna inicial. Você provavelmente obterá melhores resultados trocando a ordem das colunas em sua
PRIMARY KEY
(e o índice usado para implementá-lo por trás das cortinas com ele) para (t, metric_id)
. Ou crie um adicional index com colunas invertidas assim. - Um índice composto também é bom para consultas no primeiro campo?
Normalmente, você não precisa forçar melhores planos de consulta por intervenção manual. Se definir
enable_seqscan = OFF
leva a muito melhor plano, algo provavelmente não está certo em seu banco de dados. Considere esta resposta relacionada:- Evite que o PostgreSQL às vezes escolha um plano de consulta ruim