recentemente fiz uma migração num sistema feito com access para firebird e estou enfrentando problemas de lentidão em várias instruções SQL, como poderão ver algumas delas são idênticas, tirando é claro as particularidades do BD e por isso não entendo porque a diferença de tempo.
Seguem algumas instruções:
No Firebird:
1.
INSERT INTO Tab_Historicos_Doadores ( Hdo_Doa_Id, Hdo_Tmh_Id, Hdo_Dt, Hdo_Fun_Id, Hdo_Complemento)
SELECT Doc_Doa_Id, 10 AS Motivo, current_date AS Data, 937 AS Usuario, Doc_Id
FROM Tab_Doacoes
WHERE (current_timestamp - doc_data_operacao)>60
AND Doc_Func_Operadora = 937
AND Doc_Status_Doacao=2
2.
DELETE FROM Tab_Doacoes
WHERE (current_timestamp - doc_data_operacao)>60 AND Doc_Func_Operadora = 937 AND Doc_Status_Doacao=2
3.
SELECT Tab_Doadores.Doa_Id
FROM Tab_Doadores INNER JOIN Tab_Doacoes ON Tab_Doadores.Doa_Id = Tab_Doacoes.Doc_Doa_Id
WHERE Tab_Doacoes.Doc_Func_Operadora=937 AND Tab_Doacoes.Doc_Status_Doacao=2 AND Tab_Doadores.Doa_Status="A"
GROUP BY Tab_Doadores.Doa_Id
HAVING Count(*)<3
No Access:
1.
INSERT INTO Tab_Historicos_Doadores ( Hdo_Doa_Id, Hdo_Tmh_Id, Hdo_Dt, Hdo_Fun_Id, Hdo_Complemento)
SELECT Tab_Doacoes.Doc_Doa_Id, 10 AS Motivo, Now() AS Data, 937 AS Usuario, Tab_Doacoes.Doc_Id
FROM Tab_Doacoes
WHERE ((Now()-[doc_data_operacao])>60)
AND (Tab_Doacoes.Doc_Func_Operadora)= 937
AND (Tab_Doacoes.Doc_Status_Doacao)=2)
2.
DELETE * FROM Tab_Doacoes
WHERE ((Now()-[doc_data_operacao])>60) AND (Tab_Doacoes.Doc_Func_Operadora = 937) AND (Tab_Doacoes.Doc_Status_Doacao=2)
3.
SELECT Tab_Doadores.Doa_Id
FROM Tab_Doadores INNER JOIN Tab_Doacoes ON Tab_Doadores.Doa_Id = Tab_Doacoes.Doc_Doa_Id
WHERE (Tab_Doacoes.Doc_Func_Operadora=937) AND (Tab_Doacoes.Doc_Status_Doacao=2) AND (Tab_Doadores.Doa_Status="A")
GROUP BY Tab_Doadores.Doa_Id
HAVING (Count(*)<3)
no Firebird essas 3 instruções levam em média 3,5 segundos para serem executadas e no Access, no máximo 1,5, isso localmente.
E está acontecendo essa lentidão com várias outras instruções;
o que há de errado?
Devo observar q tenho outros sistemas no mesmo pc q rodam normalmente no Firebird.
Pergunta
fajo
Olá,
recentemente fiz uma migração num sistema feito com access para firebird e estou enfrentando problemas de lentidão em várias instruções SQL, como poderão ver algumas delas são idênticas, tirando é claro as particularidades do BD e por isso não entendo porque a diferença de tempo.
Seguem algumas instruções:
No Firebird:
1.
INSERT INTO Tab_Historicos_Doadores ( Hdo_Doa_Id, Hdo_Tmh_Id, Hdo_Dt, Hdo_Fun_Id, Hdo_Complemento)
SELECT Doc_Doa_Id, 10 AS Motivo, current_date AS Data, 937 AS Usuario, Doc_Id
FROM Tab_Doacoes
WHERE (current_timestamp - doc_data_operacao)>60
AND Doc_Func_Operadora = 937
AND Doc_Status_Doacao=2
2.
DELETE FROM Tab_Doacoes
WHERE (current_timestamp - doc_data_operacao)>60 AND Doc_Func_Operadora = 937 AND Doc_Status_Doacao=2
3.
SELECT Tab_Doadores.Doa_Id
FROM Tab_Doadores INNER JOIN Tab_Doacoes ON Tab_Doadores.Doa_Id = Tab_Doacoes.Doc_Doa_Id
WHERE Tab_Doacoes.Doc_Func_Operadora=937 AND Tab_Doacoes.Doc_Status_Doacao=2 AND Tab_Doadores.Doa_Status="A"
GROUP BY Tab_Doadores.Doa_Id
HAVING Count(*)<3
No Access:
1.
INSERT INTO Tab_Historicos_Doadores ( Hdo_Doa_Id, Hdo_Tmh_Id, Hdo_Dt, Hdo_Fun_Id, Hdo_Complemento)
SELECT Tab_Doacoes.Doc_Doa_Id, 10 AS Motivo, Now() AS Data, 937 AS Usuario, Tab_Doacoes.Doc_Id
FROM Tab_Doacoes
WHERE ((Now()-[doc_data_operacao])>60)
AND (Tab_Doacoes.Doc_Func_Operadora)= 937
AND (Tab_Doacoes.Doc_Status_Doacao)=2)
2.
DELETE * FROM Tab_Doacoes
WHERE ((Now()-[doc_data_operacao])>60) AND (Tab_Doacoes.Doc_Func_Operadora = 937) AND (Tab_Doacoes.Doc_Status_Doacao=2)
3.
SELECT Tab_Doadores.Doa_Id
FROM Tab_Doadores INNER JOIN Tab_Doacoes ON Tab_Doadores.Doa_Id = Tab_Doacoes.Doc_Doa_Id
WHERE (Tab_Doacoes.Doc_Func_Operadora=937) AND (Tab_Doacoes.Doc_Status_Doacao=2) AND (Tab_Doadores.Doa_Status="A")
GROUP BY Tab_Doadores.Doa_Id
HAVING (Count(*)<3)
no Firebird essas 3 instruções levam em média 3,5 segundos para serem executadas e no Access, no máximo 1,5, isso localmente.
E está acontecendo essa lentidão com várias outras instruções;
o que há de errado?
Devo observar q tenho outros sistemas no mesmo pc q rodam normalmente no Firebird.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.