Melhora em performance de SQL

5 respostas
B

ele faz union de duas consultas iguais, uma com 81, 84, outra com 83, não seria melhor fazer então 81, 83, 84? assim:

SELECT o.opr_id opr_id, o.opr_descricao operadora, 0 qtdearquivos, 0 coletados, 0 validos, 0 preench, 0 invalidos, SUM (es.psae_num_cdrs) cdrssaida81, 0 cdrssaida82, 0 cdrssaida83, 0 cdrssaida85, 0 cdrssaida87, 0 indicconcat FROM pmd2_arquivos_entrada e, pmd2_sub_arquivos_entrada es, crp2_operadoras o WHERE e.opr_id = o.opr_id AND e.paqe_id = es.paqe_id AND e.paqe_data_entrada BETWEEN TO_DATE ('20080512 00:00:00', 'YYYYMMDD HH24:MI:SS' ) AND TO_DATE ('20080512 23:59:59', 'YYYYMMDD HH24:MI:SS' ) AND es.bsi_id IN (81, 83, 84) GROUP BY o.opr_id, o.opr_descricao

5 Respostas

B

Se eles não agrupam normalmente desse jeito, então normalmente (81, 84) nem funcionaria, só se forem casos de dados muito específicos(tipo relações 1:1/1:N numa tabela 1:N/N:M).

louds

Qual o execution plan dessa query?

lucao

Qual o banco ?
Tenta utilizar variável bind.

I

Bom dia galera GUJ.

Tenho o devido SQL, que se “repete” na clausula UNION diversas vezes para buscar e preencher cada cdrssaida destes, levando em consideração sempre o BSI_ID, assim AND es.bsi_id IN (81, 84), faço outro select unindo com esses mas com essa clausula AND es.bsi_id IN (83) por exemplo, mas isso esta caindo muito a performance demorando muito para realizar os selects. Como posso melhorar essa consulta?

/* Formatted on 2008/05/12 17:41 (Formatter Plus v4.8.7) */ SELECT o.opr_id opr_id, o.opr_descricao operadora, 0 qtdearquivos, 0 coletados, 0 validos, 0 preench, 0 invalidos, SUM (es.psae_num_cdrs) cdrssaida81, 0 cdrssaida82, 0 cdrssaida83, 0 cdrssaida85, 0 cdrssaida87, 0 indicconcat FROM pmd2_arquivos_entrada e, pmd2_sub_arquivos_entrada es, crp2_operadoras o WHERE e.opr_id = o.opr_id AND e.paqe_id = es.paqe_id AND e.paqe_data_entrada BETWEEN TO_DATE ('20080512 00:00:00', 'YYYYMMDD HH24:MI:SS' ) AND TO_DATE ('20080512 23:59:59', 'YYYYMMDD HH24:MI:SS' ) AND es.bsi_id IN (81, 84) GROUP BY o.opr_id, o.opr_descricao

I

renrutal,

Não, porque cada BSI_ID corresponde a um registro diferente, tendo que separar a consulta por bsi_id para ter todos os resultados de uma vez.

Criado 13 de maio de 2008
Ultima resposta 13 de mai. de 2008
Respostas 5
Participantes 4