PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Se a contagem do PostgreSQL (*) for sempre lenta, como paginar consultas complexas?


Você leu o título desse artigo?

Observe que o artigo a seguir se aplica apenas às versões do PostgreSQL anteriores à 9.2. As varreduras somente de índice agora estão implementadas.

Use 9.2 e você geralmente descobrirá que obtém resultados muito melhores. Leia a página wiki de varreduras somente de índice para obter detalhes.

Dito isso, em versões mais antigas usando LIMIT e OFFSET geralmente funciona bem. Você pode estimar a contagem de linhas (e, portanto, a contagem de páginas) usando as estatísticas da tabela, se não se importar com um pouco de variação. Consulte "Estimar a contagem de linhas" no artigo ao qual você já vinculou.

Paginação usando LIMIT e OFFSET é, IMO, um anti-padrão de qualquer maneira. Muitas vezes você pode reformular seu código de paginação para que ele use sort_column > 'last_seen_value' LIMIT 100 , ou seja, evita o deslocamento. Isso às vezes pode resultar em ganhos de desempenho muito grandes.