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  
André Santos

André Santos

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)

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 verem
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar