Versão: PostgreSQL 10.3
O PostgreSQL suporta a saída de resultados JSON. Esta parece ser uma combinação de ouro para minhas demandas de aplicativos.
Agora, antes de virar o código da minha aplicação de cabeça para baixo para benchmarks e testes, fiz algumas consultas com alguns EXPLAIN ANALYZE
e quase não custou nada a mais.
Exemplo simples:
explain analyze
select id, name, phonenumber, email
from contacts
order by name
limit 27
offset 2;
QUERY PLAN
══════════════════════════════════════════════════════════════
Limit (cost=62.61..62.68 rows=27 width=61) \
(actual time=0.223..0.226 rows=27 loops=1)...
Explicação completa para a consulta simples aqui .
explain analyze
select json_agg(contacts) as contacts
from(
select id, name, phonenumber, email
from contacts
order by name
limit 27
offset 2
) as contacts;
QUERY PLAN
══════════════════════════════════════════════════════════════
Aggregate (cost=63.02..63.03 rows=1 width=32) \
(actual time=0.272..0.272 rows=1 loops=1)...
Explicação completa para a consulta JSON aqui .
Eu sou muito novo nisso (desempenho do SQL) e parece bom demais para ser verdade. As seguintes conclusões estão corretas?:
- Olhando para o tempo total de execução, o impacto na saída JSON é relativamente baixo para o exemplo fornecido
- Descobri que o tempo "excluído" para agregação JSON é diretamente proporcional ao tamanho do conjunto de resultados. (Ao aumentar a opção de limite). No entanto, a mesma consequência proporcional estará no lado do cliente se o conjunto de resultados for analisado lá.
- Com consultas mais complexas, como junções, a sobrecarga relativa (%) da agregação JSON será menor.
com bancos de dados os acessos ao disco são os bits lentos, converter para JSON em vez de ASCII (ou formato de fio postgresql) não custa muito em comparação com toda a atividade do disco.