Getting your Trinity Audio player ready...
|
Dessa vez o anfitrião do T-SQL Tuesday é o próprio idealizador Adam Machanic (Blog | Twitter).
E de uma forma diferente, não é na Terça-feira,,, por quê?
Porque não importa, desde que funcione pode ser zuado mesmo,,, o tópico desse mês é sobre “mostrar seu código lixo para o mundo”,,,
Todo mundo já escreveu um código uma vez ou outra,,,, todo o DBA tem aquele conjunto de scripts que o ajudam a identificar alguns problemas, fazer um tunning, arrumar alguma coisa,,, E com certeza todo mundo tem aquele código que hoje, pega para olha e começa a dar risada de como é que teve coragem de fazer uma coisa como aquela…
Meu exemplo é bem simples, O código é horrível, demora demais mas, funciona,,,
Ele troca os dados de posição de uma coluna específica.
WITH cteTableTel AS ( SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS n, SOBRENOME FROM CLIENTES ) UPDATE CLIENTES SET ENDERECO = ( SELECT ENDERECO FROM cteTableTel WHERE cteTableTel.n = CLIENTES.ID)
;WITH cte AS ( SELECT ROW_NUMBER() OVER (ORDER BY NEWID()) AS n1, ROW_NUMBER() OVER (order by SOBRENOME) AS n2, SOBRENOME FROM CLIENTES ) UPDATE c1 SET SOBRENOME = c2.SOBRENOME from cte as c1 inner join cte as c2 on c1.n1 = c2.n2
Dessa vez não tem problema com o usuário sem o dado alterado, performance melhorada em quase 90% e pouco importa se a tabela em algum registro para referencia,,,
Eu comparei a execução dos 2 códigos em uma tabela com um pouco mais de 3 milhões de linhas e o segundo código demorou quase 4 horas para finalizar,,, já o primeiro código eu parei a execução dele depois de 2 SEMANAS executando.
Tenho códigos piores no meu repositório? claro que sim. Esse é apenas um exemplo de um dos piores que já fiz…
Qual é o seu? tem coragem mostrar?
Não lembro qual pior, mas provavelmente só dar um find pela palavra “CURSOR” em um passado muito distante 😛