É lento mesmo?
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?
Obs.: Mesmo demorando o resultado obtido está correto
É normal? O que devo fazer?
Anonymous
Curtidas 0
Respostas
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
Mariangela
GOSTEI 0
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
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?
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
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
05/04/2003
kd o sql?
GOSTEI 0
Anonymous
05/04/2003
kd o sql?
ENVIEI
GOSTEI 0
Anonymous
05/04/2003
Acabei de responder
GOSTEI 0
Anonymous
05/04/2003
Não recebi seu e-mail....
GOSTEI 0
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
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
05/04/2003
Brother, é lerdinho mesmo sim.... uma boa dica é migrar para o Oracle, la não acontece disso, blz?
GOSTEI 0
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
Vc nao copiou...
Manda completo pra gente dar uma olhada e ver se pode te ajudar...
Um Abraço
Werlon Goulart
GOSTEI 0
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)
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
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
Mariangela
GOSTEI 0
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
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
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