Consulta travando no firebird
Bom dia,
estou realizando o seguinte select no firebird, porém ele trava, acredito que seja devido a quantidade de dados para retornar.
É uma limitação ou posso tentar otimizar a consulta?
Segue abaixo a maneira que estou consultando.
Obrigada,
estou realizando o seguinte select no firebird, porém ele trava, acredito que seja devido a quantidade de dados para retornar.
É uma limitação ou posso tentar otimizar a consulta?
Segue abaixo a maneira que estou consultando.
select ins.CDINSUMO, mins.CDINSUMO, ins.DEINSUMO, det.CDDETALHE, det.DEDETALHE , ins.CDUNIDADEMEDIDA , uni.CDUNIDADEMEDIDA , uni.DEUNIDADEMEDIDA ,
uni.DESIMBOLO , mins.CDMARCA , cmarc.CDMARCA, cmarc.DEMARCA, ins.flativo, det.flativo, uni.FLATIVO , mins.FLATIVO , cmarc.FLATIVO
from ecstdetalheinsumo det, ecadunidademedida uni , ecadmarca marc , ecstmarcainsumo mins , ecadmarca cmarc
join ecstinsumo ins on ins.CDINSUMO = det.CDINSUMO and ins.CDUNIDADEMEDIDA = uni.CDUNIDADEMEDIDA and
ins.CDINSUMO = mins.CDINSUMO and mins.CDMARCA = cmarc.CDMARCA
where ins.flativo = 'S' and det.flativo = 'S' and uni.FLATIVO = 'S' and mins.FLATIVO = 'S' and cmarc.FLATIVO = 'S'Obrigada,
Suenne
Curtidas 0
Respostas
Marisiana Battistella
03/08/2015
Olá Suenne!
Você está criando os JOIN entre as tabelas de forma errada, eles devem ser realizados entre as tabelas. Veja:
Você está criando os JOIN entre as tabelas de forma errada, eles devem ser realizados entre as tabelas. Veja:
select ins.CDINSUMO,
mins.CDINSUMO,
ins.DEINSUMO,
det.CDDETALHE,
det.DEDETALHE,
ins.CDUNIDADEMEDIDA,
uni.CDUNIDADEMEDIDA,
uni.DEUNIDADEMEDIDA,
uni.DESIMBOLO,
mins.CDMARCA,
cmarc.CDMARCA,
cmarc.DEMARCA,
ins.flativo,
det.flativo,
uni.FLATIVO,
mins.FLATIVO,
cmarc.FLATIVO
from ecstinsumo ins
inner join ecstdetalheinsumo det
on ins.CDINSUMO = det.CDINSUMO
inner join ecadunidademedida uni
on ins.CDUNIDADEMEDIDA = uni.CDUNIDADEMEDIDA
inner join ecstmarcainsumo mins
on ins.CDINSUMO = mins.CDINSUMO
inner join ecadmarca cmarc
on mins.CDMARCA = cmarc.CDMARCA
where ins.flativo = 'S'
and det.flativo = 'S'
and uni.FLATIVO = 'S'
and mins.FLATIVO = 'S'
and cmarc.FLATIVO = 'S'
GOSTEI 0
Suenne
03/08/2015
Boa tarde Marisiana,
primeiramente muito obrigada pela ajuda.
Veja o que retornou:
O que isso significa?
Obrigada.
primeiramente muito obrigada pela ajuda.
Veja o que retornou:
PLAN MERGE (SORT (JOIN (UNI NATURAL, INS INDEX (R_1056))), SORT (JOIN (CMARC NATURAL, MINS INDEX (R_1059))), SORT (DET NATURAL))
O que isso significa?
Obrigada.
GOSTEI 0
Marisiana Battistella
03/08/2015
Verifica se as ligações entre as tabelas então corretas, eu montei o SQL pela lógica mas não sei o que é Foreign Key e o que é Primary Key.
O correto seria a " Foreign Key = Primary Key ".
Pelo retorno que você postou, há índices criados para as tabelas, então você precisa observar quais são e fazer a ligação de todas as tabelas envolvidas...
O correto seria a " Foreign Key = Primary Key ".
Pelo retorno que você postou, há índices criados para as tabelas, então você precisa observar quais são e fazer a ligação de todas as tabelas envolvidas...
GOSTEI 0
Suenne
03/08/2015
Marisiana,
outro detalhe....o firebird tem alguma limitação para retornar uma grande quantidade de dados?
Ele começou a retornar os dados, porém durante o processo retornou o erro:
The following error(s) have ocurred: Out of memory
Obrigada.
outro detalhe....o firebird tem alguma limitação para retornar uma grande quantidade de dados?
Ele começou a retornar os dados, porém durante o processo retornou o erro:
The following error(s) have ocurred: Out of memory
Obrigada.
GOSTEI 0