Otimização de Query
14/07/2017
0
Ola pessoal, boa tarde!
Ainda sou iniciante e estou dando muitas voltas para fazer querys no SQL.
Por exemplo no trecho abaixo faço 15 UPDATES para fazer varias regras de acordo com a regra de negocio gostaria de saber se e possível fazer uma melhoria na query de acordo com esses UPDATES?
--- REGRA 1
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES = 0
AND DIF = 0
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 7
AND RECORRENCIA = 7
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 30
AND RECORRENCIA = 30
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
WHERE VALID_MES > 0
AND DIF < 7
AND RECORRENCIA <> 30
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
FROM [dbo].[SVA_TARIFACOES_INDEVIDAS3]
WHERE VALID_MES > 0
AND DIF < 30
AND RECORRENCIA <> 7
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
FROM [dbo].[SVA_TARIFACOES_INDEVIDAS3]
WHERE VALID_MES > 0
AND DIF > 30
AND RECORRENCIA = 30
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
FROM [dbo].[SVA_TARIFACOES_INDEVIDAS3]
WHERE VALID_MES > 0
AND DIF > 7
AND RECORRENCIA = 7
--REGRA 2
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 4
AND FEE = 199
AND RECORRENCIA = 4
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
WHERE FEE = 99
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF >= 4
AND FEE = 199
AND STEPDOWN = 'SIM'
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF >= 4
AND FEE = 199
AND STEPDOWN = 'NÃO'
--REGRA 3
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND FEE = 100
AND RECORRENCIA = 2
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
WHERE VALID_MES > 0
AND DIF = 1
AND FEE = 100
AND RECORRENCIA = 2
--REGRA 4
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 15
AND FEE = 345
AND RECORRENCIA = 15
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF >= 15
AND FEE = 345
AND STEPDOWN = 'SIM'
Ainda sou iniciante e estou dando muitas voltas para fazer querys no SQL.
Por exemplo no trecho abaixo faço 15 UPDATES para fazer varias regras de acordo com a regra de negocio gostaria de saber se e possível fazer uma melhoria na query de acordo com esses UPDATES?
--- REGRA 1
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES = 0
AND DIF = 0
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 7
AND RECORRENCIA = 7
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 30
AND RECORRENCIA = 30
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
WHERE VALID_MES > 0
AND DIF < 7
AND RECORRENCIA <> 30
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
FROM [dbo].[SVA_TARIFACOES_INDEVIDAS3]
WHERE VALID_MES > 0
AND DIF < 30
AND RECORRENCIA <> 7
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
FROM [dbo].[SVA_TARIFACOES_INDEVIDAS3]
WHERE VALID_MES > 0
AND DIF > 30
AND RECORRENCIA = 30
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
FROM [dbo].[SVA_TARIFACOES_INDEVIDAS3]
WHERE VALID_MES > 0
AND DIF > 7
AND RECORRENCIA = 7
--REGRA 2
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 4
AND FEE = 199
AND RECORRENCIA = 4
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
WHERE FEE = 99
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF >= 4
AND FEE = 199
AND STEPDOWN = 'SIM'
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF >= 4
AND FEE = 199
AND STEPDOWN = 'NÃO'
--REGRA 3
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND FEE = 100
AND RECORRENCIA = 2
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'NÃO'
WHERE VALID_MES > 0
AND DIF = 1
AND FEE = 100
AND RECORRENCIA = 2
--REGRA 4
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF = 15
AND FEE = 345
AND RECORRENCIA = 15
UPDATE [dbo].[SVA_TARIFACOES_INDEVIDAS3]
SET VALID_FINAL = 'SIM'
WHERE VALID_MES > 0
AND DIF >= 15
AND FEE = 345
AND STEPDOWN = 'SIM'
Welton Becegato
Curtir tópico
+ 0
Responder
Posts
14/08/2017
Venancio Alves
Olá Welton, tudo bem?
Já tentou criar Procedures para cada regra de negócios, pois desta forma você irá otimizar tempo e fará o Update apenas chamando a procedure.
Já tentou criar Procedures para cada regra de negócios, pois desta forma você irá otimizar tempo e fará o Update apenas chamando a procedure.
Responder
Clique aqui para fazer login e interagir na Comunidade :)