Galera Boa noite.
sou uma pessoa leiga nos conhecimentos de banco de dados…
o problema é o seguinte:
tenho uma tabela chamada “faturas” que tem cerca de 200 mil linhas e cada mes aumenta cerca de 10 mil.
uso uma query que busca alguns dados agrupando pela competencia do mês.
O problema que ela demora cerca de 11 segundos para processar.
a lógica do processo é o seguinte: selecionar [competencia do mes] ,[totalVidas], [totalitens - titulares], [dependentes]
segue:
select fa.competencia,
(select count(distinct(certificado)) from faturas where competencia = fa.competencia AND substring(certificado from '.......$') != '0000/00') as totalVidas,
(select count(distinct(certificado)) from faturas where competencia = fa.competencia AND substring(certificado from '...$') = '/00') as totalitens -
(select count(distinct(certificado)) from faturas where competencia = fa.competencia AND substring(certificado from '.......$') = '0000/00') as titulares,
(select count(distinct(certificado)) from faturas where competencia = fa.competencia AND substring(certificado from '...$') != '/00') as dependentes
from faturas as fa
group by fa.competencia order by fa.competencia ASC
como posso aumentar minha performance nessa consulta??
obs.: meu Bando de Dados é o PostgreSQL
agradeço desde ja