Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Performance com VIEWs

Olá!

No curso foi bem enfatizado que o uso de views pode diminuir a performance de consultas em relatórios porque o banco tem que executar a view e depois a consulta que a utiliza.

Fiquei confusa porque na fábrica de software que eu trabalhei sempre diziam que usar views AUMENTAVA a performance porque a nossa consulta principal não precisava percorrer todos os campos de uma tabela grande, estaria recebendo o dado "pronto".

Inocentemente na época eu entendi que a view tinha o dado pronto atualizado e o tempo de consulta que ela faz seria economizado.

Então, agora não sei: meus colegas de fábrica de software estavam completamente errados ou existem casos em que a view pode sim ser mais performática ou o não uso dela?

*Além disso, existe algum comando que posso executar com a query para me retornar em detalhes o tempo de execução? *

Fiquei imaginando como poderia comparar a performance de instruções diferentes que fazem a mesma coisa para descobrir a mais performática para usar.

2 respostas
solução!

Olá, Luciana.

Para saber mais sobre a performance de uma query você pode usar o EXPLAIN: https://www.postgresql.org/docs/current/sql-explain.html

Sobre a performance, o seguinte acontece:

Imagina que você tenha uma view chamada v que simplesmente é um SELECT * FROM tabela; para deixar o exemplo simples. Se você fizer SELECT * FROM v WHERE coluna = 'valor', ao invés de filtrar os resultados na tabela o banco buscará todos os dados da tabela e adicioná-los em memória para carregar a view. Só depois disso ele passará a realizar o filtro em cima dos dados que já poderiam ter sido filtrados diretamente na tabela, entende? Nesse cenário há perda de performance.

Sobre ganho de performance de uma view sobre o acesso direto a tabela, eu honestamente desconheço algum caso onde isso possa acontecer.

Entendi, obrigada.