[firebase-br] Otimizar SQL causa problemas no server do FB

Welson Avelar welson_avelar em yahoo.com.br
Qui Out 26 18:13:07 -03 2006


Olá amigos, tudo certo !?
Eu estou aqui precisando de otimizar uma query. A original é:

select
CT.NomeCliente, CT.NumeroContrato, CT.MatriculaCliente,
CT.FinalidadeCredito, CT.SituacaoContrato, CT.ValorCredito,
CT.TaxaAberturaCredito, CT.ParcelarTAC, CT.TaxaJuros,
CT.AuxRenegociacaoContrato, CT.DataCriacaoContrato, CT.DataAssinaturaContrato,
CT.DataContratoLiquidado, CT.DataContratoRenegociado,
CT.DataContratoEmLiquidacao, CT.DataContEmRenegociacao,
CT.DataLiberacaoContrato, CT.Parcelas, CT.IDContrato, CT.IDOrgaoFinanciador,
O.NomeOrgaoFinanciador, O.IDOrgaoFinanciador, F.NomeFuncionario,
F.IDFuncionario, P.IDPesquisa, P.IDAgenteCredito, PAB.NomePosto, PAB.IDPosto,
C.IDCliente, C.IDPAB, A.OperacaoCreditoFixo

from TBContratos CT, TBPesquisas P, TBFuncionarios F, TBOrgaosFinanciadores O,
TBPostos PAB, TBClientes C, TBAtas A

where (CT.IDOrgaoFinanciador = O.IDOrgaoFinanciador)

and (CT.MatriculaCliente = C.IDCliente)
and (CT.IDPAB = C.IDPAB)

and (C.IDPAB = PAB.IDPosto)

and (CT.IDContrato = P.IDPesquisa)
and (CT.IDPAB = P.IDPAB)

and (P.IDAgenteCredito = F.IDFuncionario)

and (CT.IDContrato = A.IDAta)
and (CT.IDPAB = A.IDPAB)

and (CT.TipoContrato <> 3)


E mudei pra isso aqui agora:

SELECT
CT.NomeCliente, CT.NumeroContrato, CT.MatriculaCliente,
CT.FinalidadeCredito, CT.SituacaoContrato,
CT.ValorCredito, CT.TaxaAberturaCredito, CT.ParcelarTAC,
CT.TaxaJuros, CT.AuxRenegociacaoContrato,
CT.DataCriacaoContrato, CT.DataAssinaturaContrato,
CT.DataContratoLiquidado, CT.DataContratoRenegociado,
CT.DataContratoEmLiquidacao, CT.DataContEmRenegociacao,
CT.DataLiberacaoContrato, CT.Parcelas, CT.IDContrato,
CT.IDOrgaoFinanciador, O.NomeOrgaoFinanciador,
O.IDOrgaoFinanciador, F.NomeFuncionario, F.IDFuncionario,
P.IDPesquisa, P.IDAgenteCredito, PAB.NomePosto, PAB.IDPosto,
C.IDCliente, C.IDPAB, A.OperacaoCreditoFixo

FROM TBContratos CT
INNER JOIN TBPesquisas P ON (CT.IDContrato = P.IDPesquisa AND CT.IDPAB =
P.IDPAB)

INNER JOIN TBClientes C ON (CT.MatriculaCliente = C.IDCliente AND CT.IDPAB =
C.IDPAB)

INNER JOIN TBPostos PAB ON (C.IDPAB = PAB.IDPosto)

INNER JOIN TBFuncionarios F ON (P.IDAgenteCredito = F.IDFuncionario)

INNER JOIN TBOrgaosFinanciadores O ON (CT.IDOrgaoFinanciador =
O.IDOrgaoFinanciador)

INNER JOIN TBAtas A ON (CT.IDContrato = A.IDAta AND CT.IDPAB = A.IDPAB)

WHERE (CT.TipoContrato <> 3)

Eu não sei se está correta a minha mudança, e antes que vocês digam "Ora, veja
o resultset então pra ter certeza dos registros" eu já respondo.
Realmente, depois que mudei pra essa minha segunda query, o resultado me
aparece mais rápido, entretanto o Firebird simplesmente trava a máquina. Isso
mesmo. Depois do resultset aparecer na tela (estou realizando todos os testes
no IBExpert) a máquina fica absurdamente lenta e trava, não me possibilitando
conferir o resultado, saca ?!

Dados do servidor do Firebird:
Server Version: WI-V1.5.3.4870 Firebird 1.5
Server Implementation: Firebird/x86/Windows NT

Um abraço, e até mais.

=================================
"O que me preocupa não é o grito dos maus. É o silêncio dos bons."
Martin Luther King.
=================================
Welson de Avelar Soares Filho
Analista/Programador Delphi
Gemini Sistemas
www.geminisistemas.com.br
Juiz de Fora - Minas Gerais
=================================


	



	
		
_______________________________________________________ 
Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas !
http://br.answers.yahoo.com/




Mais detalhes sobre a lista de discussão lista