Usuário com melhor resposta
joins com retorno com performance

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.
Respostas
-
Faz o seguinte poste as estruturas da tabelas TB_PEDIDO, TB_PEDIDO_ITEM, TB_PRODUTO e TB_NOTAFISCAL
Att.
Marcelo FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Marcado como Resposta oliveiraricardos segunda-feira, 15 de agosto de 2011 13:53
-
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
Todas as Respostas
-
-
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 FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
-
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 FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
-
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 FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
-
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 FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba -
Faz o seguinte poste as estruturas da tabelas TB_PEDIDO, TB_PEDIDO_ITEM, TB_PRODUTO e TB_NOTAFISCAL
Att.
Marcelo FernandesMCP, MCDBA, MCSA, MCTS.
Se útil, classifique!!!
Me siga no twitter: @marcelodba- Marcado como Resposta oliveiraricardos segunda-feira, 15 de agosto de 2011 13:53
-
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
-
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