Left join muito demorada
Fiz um select com varios Left Join Porém esta demorando muito e não há atividade do hd depois de uns 15min que da o retorno quando faço com inner join ele funciona bacana mas alguns registros que quero não funciona.
Sremulador
Curtidas 0
Respostas
Fsflorencio
28/10/2004
As consultas são idênticas com exceção dos joins?
Caso afirmativo, faça o seguinte:
Verifique quais índices estão sendo retornados no [b:6bff994485]plano [/b:6bff994485]da primeira consulta e coloque na segunda.
Acredito que ele esteja usando índices inadequados para executar a segunda consulta.
Caso afirmativo, faça o seguinte:
Verifique quais índices estão sendo retornados no [b:6bff994485]plano [/b:6bff994485]da primeira consulta e coloque na segunda.
Acredito que ele esteja usando índices inadequados para executar a segunda consulta.
GOSTEI 0
Sremulador
28/10/2004
As consultas são idênticas com exceção dos joins?
Sim, mas será que ele muda o plano só por causa disso ???
GOSTEI 0
Fsflorencio
28/10/2004
Acredito que não.
Mas se o plano estiver mudando o problema está resolvido passando o plano correto, e se não estiver mudando vamos ter que encontrar outro caminho.
Não sei qual versão vc usa do Firebird ou Interbase, sei que já ví no Interbase acontecerem coisas estranhas como mudar o plano mudando pouca coisa.
No FB1.5 mudei o inner pra left e não mudou o plano.
Mas se o plano estiver mudando o problema está resolvido passando o plano correto, e se não estiver mudando vamos ter que encontrar outro caminho.
Não sei qual versão vc usa do Firebird ou Interbase, sei que já ví no Interbase acontecerem coisas estranhas como mudar o plano mudando pouca coisa.
No FB1.5 mudei o inner pra left e não mudou o plano.
GOSTEI 0
Sremulador
28/10/2004
Eu apliquei o plano e continua uma lentidão só :(
GOSTEI 0
Afarias
28/10/2004
coloque aqui a consulta e o plano para podermos saber o q pode estar havendo
T+
T+
GOSTEI 0
Sremulador
28/10/2004
Eu refiz tudo a consulta vinha de um view acho que era isso mas ficava lenta demais uns 40m para dar o retorno :(, mesmo que se tenha chave primaria e nescessário criar indices ???
GOSTEI 0
Afarias
28/10/2004
|mesmo que se tenha chave primaria e nescessário criar indices ???
no(s) campo(s) da chave primária não.
bom, mas sem saber pelo menos o plano, a consulta -- e possivelmente parte do modelo, realmente é difícil dizer qualquer coisa quanto a otimização da consulta
T+
no(s) campo(s) da chave primária não.
bom, mas sem saber pelo menos o plano, a consulta -- e possivelmente parte do modelo, realmente é difícil dizer qualquer coisa quanto a otimização da consulta
T+
GOSTEI 0
Rodolpho123
28/10/2004
Cara, tería como vc postar a sua qry aqui no fórum? Aconteceu uma vez comigo um problema parecido com este e a solução foi um simples ´()´ -´parênteses´ , bobo... Acho que com a sua qry aqui, a galera do fórum vai poder te ajudar...
GOSTEI 0
Sremulador
28/10/2004
Amigos eu refiz em uma view esta pesuisa o que acontecia e que eu fiz uma view de outra e o que pareceu e que era este o problema, agradeço a disponibilidade de todos em ajudar, outra questão
quando eu faço uma pesquisa de uma view são pesquisado todos os dados e somente em uma seguinda etapa são aplicado os filtros ou isso acontesse desde a primeira ???
Valeu
quando eu faço uma pesquisa de uma view são pesquisado todos os dados e somente em uma seguinda etapa são aplicado os filtros ou isso acontesse desde a primeira ???
Valeu
GOSTEI 0
Marcos Conceição
28/10/2004
Errado generalizar uma view pois retorna muito registros desnecessariamente além de ter uma terrivel sensação de lentidão.
Certo
create view view_cotacaoteste as select * from cotacaof c,fornec f where c.fornecedor=f.codigo;
Certo
CREATE VIEW "VIEWCOTACAOF" ( "CODIGO", "EMISSAO", "DATA_BASE", "COD_FORN", "FORNECEDOR", "CONTATO" ) AS select c.codigo,c.emissao,c.data_base,c.fornecedor,f.fornecedor,c.contato from cotacaof c,fornec f where c.fornecedor=f.codigo;
GOSTEI 0