Tenho alguns testes no GitHub que registram quanto tempo leva para executar uma consulta e buscar todos os resultados.
Se eu verificar o plano de execução, recebo:
Index Scan using post_comment_pkey on post_comment postcommen0_ (cost=0.29..2716.48 rows=34752 width=43) (actual time=6.767..14.352 rows=34880 loops=1)
Filter: (post_id = 1)
Rows Removed by Filter: 34880
Planning time: 0.659 ms
Execution time: 14.840 ms
Portanto, a consulta está usando um índice e sendo executada em 15 ms.
No entanto, no lado Java, após o ResultSet ser buscado e processado, a medição de tempo indica que demorou 90 ms.
A única explicação seria que o Explain Analyze não considera o tempo de busca e a busca de 34880 registros leva de 50 a 60 ms.
Isso está correto?
O desempenho da busca depende do desempenho do cliente, memória disponível, uso da CPU, desempenho da rede... Não vejo como o EXPLAIN ANALYZE poderia levar isso em consideração. Então eu diria que você está correto.