Fórum ajuda em consulta #389733
30/10/2010
0
tenho o seguinte sql:
SELECT v.DTVENDA AS DATA,
v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM EST007 v INNER JOIN EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,'') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND COALESCE(i.TIPOVENDA,'') <> 'F'
AND i.Produto = '01001'
AND i.Empresa = v.Empresa se o produto existe na tabela i o resultado do select é rapido se nao existe o resultado é lento. por favor me ajudem
v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM EST007 v INNER JOIN EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,'') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND COALESCE(i.TIPOVENDA,'') <> 'F'
AND i.Produto = '01001'
AND i.Empresa = v.Empresa se o produto existe na tabela i o resultado do select é rapido se nao existe o resultado é lento. por favor me ajudem
André Santos
Curtir tópico
+ 0
Responder
Posts
30/10/2010
Emerson Nascimento
SELECT
v.DTVENDA AS DATA,
v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM
EST007 v
INNER JOIN
EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,'') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND COALESCE(i.TIPOVENDA,'') <> 'F'
AND i.Produto = '01001'
AND i.Empresa = v.Empresa <----- desnecessário
tente:
SELECT
v.DTVENDA AS DATA,
v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM
EST007 v
INNER JOIN
EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
AND COALESCE(i.TIPOVENDA,' ') <> 'F'
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,' ') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND i.Produto = '01001'
a performance depende dos índices criados. sempre que possível crie índices para todos os campos utilizados nos relacionamentos (EST008, campos EMPRESA e ITEMVENDACONTADOR) e também nas condições de filtro (EST007, campos EMPRESA, DTVENDA, TIPOVENDA; EST008, campo PRODUTO)
v.DTVENDA AS DATA,
v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM
EST007 v
INNER JOIN
EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,'') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND COALESCE(i.TIPOVENDA,'') <> 'F'
AND i.Produto = '01001'
AND i.Empresa = v.Empresa <----- desnecessário
tente:
SELECT
v.DTVENDA AS DATA,
v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM
EST007 v
INNER JOIN
EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
AND COALESCE(i.TIPOVENDA,' ') <> 'F'
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,' ') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND i.Produto = '01001'
a performance depende dos índices criados. sempre que possível crie índices para todos os campos utilizados nos relacionamentos (EST008, campos EMPRESA e ITEMVENDACONTADOR) e também nas condições de filtro (EST007, campos EMPRESA, DTVENDA, TIPOVENDA; EST008, campo PRODUTO)
Responder
Gostei + 0
30/10/2010
André Santos
tenho o seguinte sql:
SELECT v.DTVENDA AS DATA,
v.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM EST007 v INNER JOIN EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,'') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND COALESCE(i.TIPOVENDA,'') <> 'F'
AND i.Produto = '01001'
AND i.Empresa = v.Empresa se o produto existe na tabela i o resultado do select é rapido se nao existe o resultado é lento. por favor me ajudem
Os Indices das tabelas pra vcs veremv.NUMDOC, v.CLIENTE, v.PRAZO, v.NotaFiscal,
i.PRODUTO, i.QTDE AS SAIDA, i.VALOR, i.TOTPROD, i.TIPOVENDA,i.VALORDESC
FROM EST007 v INNER JOIN EST008 i ON i.EMPRESA = v.EMPRESA
AND i.ITEMVENDACONTADOR = v.VENDACONTADOR
WHERE v.Empresa = 1
AND v.DtVenda >= '01.01.0001'
AND v.DtVenda <= '30.09.2010'
AND COALESCE(v.Cancelado,'N') <> 'S'
AND COALESCE(v.BAIXAR,'') <> 'D'
AND COALESCE(v.MOVIMENTAESTOQUE,'S') <> 'N'
AND COALESCE(i.TIPOVENDA,'') <> 'F'
AND i.Produto = '01001'
AND i.Empresa = v.Empresa se o produto existe na tabela i o resultado do select é rapido se nao existe o resultado é lento. por favor me ajudem
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)