Desejo comparar o desempenho de uma consulta complicada específica JOIN para vários valores de ID de chave primária. A maioria das abordagens anteriores dizem para usar EXPLAIN ANALYZE para a consulta em questão e obter o "Total runtime: .... ms" para contar o desempenho. O problema é que, mesmo quando uso o mesmo ID, obtenho resultados muito diferentes, por exemplo, tempo variando de 20 segundos a 140 segundos. Note que cache não tem nada a ver com isso, pois ao rodar a mesma consulta em horários diferentes recebo esse tipo de variação, mesmo quando estamos falando do mesmo ID (obtenho sempre o mesmo plano de consulta).
Então minhas perguntas são:
- O tempo de execução total depende do cliente/interface (por exemplo, pgAdminIII vs psql). Eu acho que psql dá valores mais consistentes
- Depende do tempo da rede (devo rodar em localhost ou posso rodar até mesmo em uma máquina remota)
- Existe uma maneira de fazer medições mais consistentes ou esse tipo de flutuação é considerado normal?
Estou usando o PostgreSQL 9.2.6 de 64 bits em uma máquina linux Ubuntu 12.10 de 64 bits com 2 GB de buffers compartilhados.
Elaboração: