É lento mesmo?

Delphi

05/04/2003

Estou fazendo uma consulta na minha aplicação no banco Interbase 6.0 com cerca de 70.000 registros e demora cerca de 10min, esse mesmo SQL do relatório, quando faço direto no IB6.0 ele demora o mesmo tempo p/ dar o resultado, isso quando não trava...

Obs.: Mesmo demorando o resultado obtido está correto

É normal? O que devo fazer?


Anonymous

Anonymous

Curtidas 0

Respostas

Anonymous

Anonymous

05/04/2003

Acho dificil ser normal, Rodrigo, mas só dá pra saber se você me mandar a query, se quiser copiá-la aqui eu posso tentar te ajudar.
Mariangela


GOSTEI 0
Anonymous

Anonymous

05/04/2003

Acho dificil ser normal, Rodrigo, mas só dá pra saber se você me mandar a query, se quiser copiá-la aqui eu posso tentar te ajudar. Mariangela


Fico muito grato...
Não consigo enteder já vi muitos dizer q tem bando com tamanho
de 1gb, o banco tá só com 35mb e já uma carroça vamos dizer assim
imagina quando chegar no 1gb

Me ajuda vc quer q eu te mando o Banco também?


GOSTEI 0
Anonymous

Anonymous

05/04/2003

manda o SQL primeiro, se eu não conseguir entender te peço o banco,
Se quiser passar por email é angelalrn@bol.com.br (só a rotina sql, o banco não vai caber na caixa postal)
Qual banco vc usa?


GOSTEI 0
Anonymous

Anonymous

05/04/2003

manda o SQL primeiro, se eu não conseguir entender te peço o banco, Se quiser passar por email é angelalrn@bol.com.br (só a rotina sql, o banco não vai caber na caixa postal) Qual banco vc usa?


Inter Base 6.0


GOSTEI 0
Anonymous

Anonymous

05/04/2003

kd o sql?


GOSTEI 0
Anonymous

Anonymous

05/04/2003

kd o sql?


ENVIEI


GOSTEI 0
Anonymous

Anonymous

05/04/2003

Acabei de responder


GOSTEI 0
Anonymous

Anonymous

05/04/2003

Não recebi seu e-mail....


GOSTEI 0
Anonymous

Anonymous

05/04/2003

Tente o SQL abaixo e veja se fica mais rápido:

SELECT PEDIDOVENDAITEM.CD_VENDEDOR,
PEDIDOVENDAITEM.CD_PRODUTO,
PEDIDOVENDAITEM.CD_EMPRESA,
PEDIDOVENDAITEM.CD_DIVISAO,
EMPRESA.NM_FANTASIA,
DIVISAO.NM_DIVISAO,
VENDEDOR.NM_VENDEDOR,
PEDIDOVENDAITEM.VL_PARCIAL,
PEDIDOVENDAITEM.VL_DESCONTO,
PEDIDOVENDAITEM.VL_PEDIDOITEM,
PRODUTO.DS_PRODUTO,
PRODUTO.CD_GRUPO,
PRODUTO.CD_SUBGRUPO,
SUBGRUPO.DS_SUBGRUPO,
GRUPO.DS_GRUPO,
PEDIDOVENDA.NR_LOTE,
PEDIDOVENDAITEM.CD_VENDA,
PEDIDOVENDA.DT_CADASTRO,
PEDIDOVENDAITEM.QT_PEDIDOITEM
FROMPEDIDOVENDAITEM,
PEDIDOVENDA,
EMPRESA,
DIVISAO,
VENDEDOR,
PRODUTO,
SUBGRUPO,
GRUPO
WHERE PEDIDOVENDA.CD_VENDA = PEDIDOVENDAITEM.CD_VENDA
AND EMPRESA.CD_EMPRESA = PEDIDOVENDAITEM.CD_EMPRESA
AND DIVISAO.CD_EMPRESA = PEDIDOVENDAITEM.CD_EMPRESA
AND VENDEDOR.CD_VENDEDOR = PEDIDOVENDAITEM.CD_VENDEDOR
AND PRODUTO.CD_PRODUTO = PEDIDOVENDAITEM.CD_PRODUTO
AND SUBGRUPO.CD_SUBGRUPO = PRODUTO.CD_SUBGRUPO
AND SUBGRUPO.CD_GRUPO = PRODUTO.CD_GRUPO
AND GRUPO.CD_GRUPO = PRODUTO.CD_GRUPO


GOSTEI 0
Henry

Henry

05/04/2003

Brother, é lerdinho mesmo sim.... uma boa dica é migrar para o Oracle, la não acontece disso, blz?


GOSTEI 0
Anonymous

Anonymous

05/04/2003

Nao tem o From na sua Clausula...
Vc nao copiou...

Manda completo pra gente dar uma olhada e ver se pode te ajudar...


Um Abraço
Werlon Goulart


GOSTEI 0
Anonymous

Anonymous

05/04/2003

O meu sql está assim:



SELECT

PEDIDOVENDAITEM.CD_VENDEDOR,

PEDIDOVENDAITEM.CD_PRODUTO,

PEDIDOVENDAITEM.CD_EMPRESA,

PEDIDOVENDAITEM.CD_DIVISAO,

EMPRESA.NM_FANTASIA,

DIVISAO.NM_DIVISAO,

VENDEDOR.NM_VENDEDOR,

PEDIDOVENDAITEM.VL_PARCIAL,

PEDIDOVENDAITEM.VL_DESCONTO,

PEDIDOVENDAITEM.VL_PEDIDOITEM,

PRODUTO.DS_PRODUTO,

PRODUTO.CD_GRUPO,

PRODUTO.CD_SUBGRUPO,

SUBGRUPO.DS_SUBGRUPO,

GRUPO.DS_GRUPO,

PEDIDOVENDA.NR_LOTE,

PEDIDOVENDAITEM.CD_VENDA,

PEDIDOVENDA.DT_CADASTRO,

PEDIDOVENDAITEM.QT_PEDIDOITEM

FROM

DIVISAO

INNER JOIN EMPRESA ON (DIVISAO.CD_EMPRESA = EMPRESA.CD_EMPRESA)

INNER JOIN PEDIDOVENDAITEM ON (EMPRESA.CD_EMPRESA = PEDIDOVENDAITEM.CD_EMPRESA) AND (DIVISAO.CD_EMPRESA = PEDIDOVENDAITEM.CD_DIVISAO) AND (DIVISAO.CD_EMPRESA = PEDIDOVENDAITEM.CD_EMPRESA)

INNER JOIN VENDEDOR ON (PEDIDOVENDAITEM.CD_VENDEDOR = VENDEDOR.CD_VENDEDOR)

INNER JOIN PRODUTO ON (PEDIDOVENDAITEM.CD_PRODUTO = PRODUTO.CD_PRODUTO)

INNER JOIN SUBGRUPO ON (PRODUTO.CD_SUBGRUPO = SUBGRUPO.CD_SUBGRUPO) AND (PRODUTO.CD_GRUPO = SUBGRUPO.CD_GRUPO)

INNER JOIN GRUPO ON (SUBGRUPO.CD_GRUPO = GRUPO.CD_GRUPO)

INNER JOIN PEDIDOVENDA ON (PEDIDOVENDAITEM.CD_EMPRESA = PEDIDOVENDA.CD_EMPRESA) AND (PEDIDOVENDAITEM.CD_DIVISAO = PEDIDOVENDA.CD_DIVISAO) AND (PEDIDOVENDAITEM.CD_VENDA = PEDIDOVENDA.CD_VENDA) AND (PEDIDOVENDAITEM.CD_VENDEDOR = PEDIDOVENDA.CD_VENDEDOR)


GOSTEI 0
Anonymous

Anonymous

05/04/2003

O email que te mandei retornou dizendo usuario desconhecido, mas eu coloquei o sql aqui, você testou? eu retirei o inner join porque acho que é ele que deixa lento assim em bancos grandes.
Mariangela


GOSTEI 0
Anonymous

Anonymous

05/04/2003

O email que te mandei retornou dizendo usuario desconhecido, mas eu coloquei o sql aqui, você testou? eu retirei o inner join porque acho que é ele que deixa lento assim em bancos grandes. Mariangela


Melhorou muito!!!!, antes fiz o relatório geral com esse meu SQL e demorou 4:30 min e com o que vc alterou fez em 30seg.

Mas quero saber de uma coisa, vc sabe me dizer porq o Inner Join deixa lento no IB sendo quem em banco acess, oracle... fica na mesma com ou sem inner join?

outra coisinha, vc sabe algum programa de criar SQL apartir de um banco Intebase 6.0 sem gerar inner join? Porq eu uso o MS quick desk ou em tao uso o IBExpress, mas eles usam Inner Join

Brigadão pela ajuda Mariangela !


GOSTEI 0
Anonymous

Anonymous

05/04/2003

Olá, que bom que te ajudei...
Por que deixa lento, sinceramente eu não sei, na verdade nunca usei o inner join porque nunca precisei, o ´where e and´, junto com ´group by´ e ´order by´ sempre resolveram meus problemas.
Infelizmente também não sei de um programa de criar sql que trabalhe assim, porque eu crio manualmente, mas se precisar de dicas e informações sobre as rotinas sql, estou à disposição no que puder te ajudar.
Mariangela


GOSTEI 0
POSTAR