none
joins com retorno com performance RRS feed

  • Pergunta

  • to repitindo no join um tabela mais de uma vez, como faço para melhorar os joins e diminuir o retorno que hoje está em 4 segundos. nesta tabela

    vou buscar

    produto, descricao, produtoid, pedido, valor_produto que será inserindo na tabela fiscal.

    quarta-feira, 10 de agosto de 2011 13:19

Respostas

  • Faz o seguinte poste as estruturas da tabelas TB_PEDIDO, TB_PEDIDO_ITEM, TB_PRODUTO e TB_NOTAFISCAL

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta oliveiraricardos segunda-feira, 15 de agosto de 2011 13:53
    quarta-feira, 10 de agosto de 2011 14:48
  • Se é valor fixo vc nao precisa pegar na tabela nofafiscal....

    me manda a estrutura das tabelas (column_name e datatype)

    sp_help TB_PEDIDO

    repita  a operação para  TB_PEDIDO_ITEM, TB_PRODUTO e TB_NOTAFISCAL


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta oliveiraricardos segunda-feira, 15 de agosto de 2011 13:53
    quarta-feira, 10 de agosto de 2011 15:01

Todas as Respostas

  • Ricardo

    Poste a query e se possível o plano de execução dela.

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 10 de agosto de 2011 13:28
  • Ricardo

    Vc faz várias consultas na tabela TB_NOTAFISCAL, acredito que podemos coloca-la no join uma única vez... vc tem um campo PEDIDOID nesta tabela? podemos relacioná-la com a tabela de pedidos?

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 10 de agosto de 2011 14:03
  • sim, mais como eu quero alimentar ela com os dados do select será que dara certo relacionar ela com outra tabela?

    quarta-feira, 10 de agosto de 2011 14:07
  • Fiz uma rápida modificação, mas sem ter os dados e ver o plano de execução é complicado...

    vc tem um converte e um like que pode ser um vilão no seu plano de execução...

     

    SELECT (SELECT (MUNICIPIO)  FROM  TB_NOTAFISCAL WHERE NUM_RPS = 1)AS INSCRICAOCONTRIBUINTE,
        GETDATE() AS DATA_RPS, GETDATE () AS HORA,           
        (SELECT (SITUACAO_RPS)      FROM  TB_NOTAFISCAL WHERE NUM_RPS = 1) AS SITUACAO_RPS,
        (SELECT (CODIGO_SERVICO_PRESTADO) FROM  TB_NOTAFISCAL WHERE NUM_RPS = 1)AS CODIGO_SERVICO_PRESTADO,
        (SELECT (LOCAL_SERVICO_PRESTADO) FROM  TB_NOTAFISCAL WHERE NUM_RPS = 1)AS LOCAL_SERVICO_PRESTADO,
        P.VALORTABELADO AS VALOR_PAGO,null, TB_PEDIDO.CLIENTEID,
        TB_PEDIDO.PEDIDOID,
        TB_PEDIDO_ITEM.PEDIDOITEMID AS PEDIDO,
        TB_PEDIDO_ITEM.PRODUTOID AS PRODUTOID,    
        NOME AS NOME, SOBRENOME AS SOBRENOME,
        EMAIL AS EMAIL, CPF AS CPF, ENDERECO AS ENDERECO, NUMERO AS NUMERO,
        COMPLEMENTO AS COMPLEMENTO,BAIRRO AS BAIRRO,
        CEP AS CEP,CIDADE AS CIDADE,UF AS UF,GETDATE() AS DATAREMESSA,1 AS ATIVO,
        p.PRODUTO AS DESCRICAO 
    FROM  TB_CLIENTE C
        INNER JOIN TB_PEDIDO ON C.CLIENTEID = TB_PEDIDO.CLIENTEID
        INNER JOIN TB_PEDIDO_ITEM ON TB_PEDIDO.PEDIDOID = TB_PEDIDO_ITEM.PEDIDOID 
        --INNER JOIN TB_PEDIDO_ITEM pr ON pr.PRODUTOID = TB_PEDIDO_ITEM.PRODUTOID --duplicado
        INNER JOIN TB_PRODUTO p ON p.PRODUTO = p.PRODUTO
        --INNER JOIN TB_PRODUTO v ON v.VALORTABELADO = v.VALORTABELADO -- join errado esta ele com ele mesmo!
        INNER JOIN TB_NOTAFISCAL NF on NF.PEDIDOID = TB_PEDIDO.PEDIDOID --se for possível
       
    WHERE  CONVERT(VARCHAR, DATACONFIRMACAO,103) = CONVERT(VARCHAR, GETDATE(),103)
        AND p.PRODUTO LIKE '%CL%ICK%' 
        and TB_PEDIDO_ITEM.PRODUTOID >= 1 and TB_PEDIDO_ITEM.PRODUTOID <= 1500
        AND PEDIDOSTATUSID = 8 
        AND ENDERECO IS NOT NULL 
        AND NUMERO IS NOT NULL 
        AND COMPLEMENTO IS NOT NULL
        AND BAIRRO IS NOT NULL 
        AND CEP IS NOT NULL 
        AND CIDADE IS NOT NULL
    


     

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 10 de agosto de 2011 14:09
  • vou executar a query e já te respondo marcelo

    quarta-feira, 10 de agosto de 2011 14:13
  • Desculpe Ricardo, somente agora me atentei que o insert é na propria notafiscal...

    neste caso que valor vc espera para estes campos? pois no seu script pode retornar várias linhas e vc pode tomar um erro.

    provavelmente o select nao vai te retornar nada pois no select tem o inner join com a notafiscal que nao tem o registro ainda..

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 10 de agosto de 2011 14:32
  • A table cliente esta dando erro
    quarta-feira, 10 de agosto de 2011 14:39
  • Ricardo

    tem um erro na logica.. como vc pesquisa algo na tabela de NOTAFISCAL sem ter inserido? os campos INSCRICAOCONTRIBUINTE, SITUACAO_RPS, CODIGO_SERVICO_PRESTADO e LOCAL_SERVICO_PRESTADO você pega da notafiscal where num_rps=1

    voce só tem um registro num_rps=1? vc não tem estas informacoes em outras tabelas?

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    quarta-feira, 10 de agosto de 2011 14:46
  • Faz o seguinte poste as estruturas da tabelas TB_PEDIDO, TB_PEDIDO_ITEM, TB_PRODUTO e TB_NOTAFISCAL

    Att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta oliveiraricardos segunda-feira, 15 de agosto de 2011 13:53
    quarta-feira, 10 de agosto de 2011 14:48
  • os 5 primeiros campos tbnotafiscal são fixos, nao sendo alimentados diariamente apenas selecionados e agrupados, e na tabela alimetarei com todos os dados do cliente,com dados pedido,com dados produto que ele comprou, com dados de valor, valor total do pedido, data e hora que gerou a nota(evitando gerar duas notas iguais), descricao do tipo de produto, esta procedure sera executada em aplicacao C# que ja esta pronta so precisando ser executada pela procedure, ela trabalha com data inicio e data fim arquivo os dados em txt, em uma pasta chamada financeiro no servidor. cada cliente gera em nota

    quarta-feira, 10 de agosto de 2011 14:49
  • Se é valor fixo vc nao precisa pegar na tabela nofafiscal....

    me manda a estrutura das tabelas (column_name e datatype)

    sp_help TB_PEDIDO

    repita  a operação para  TB_PEDIDO_ITEM, TB_PRODUTO e TB_NOTAFISCAL


    MCP, MCDBA, MCSA, MCTS.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta oliveiraricardos segunda-feira, 15 de agosto de 2011 13:53
    quarta-feira, 10 de agosto de 2011 15:01