Se você tem menos de 18 anos, ou sofre de problemas cardíacos, ou não tem certeza sobre suas convicções religiosas, ou não manja de UPDATE, então NÃO PROSSIGA.
Eu e o Márcio Gomes, em uma discussão sobre SQL (o que nunca dá bons resultados), nos deparamos com o bendito do ‘WHERE 1=1’, que em um momento de insanidade transformamos em ‘WHERE SQRT(SQUARE(1 + 1)) * 3 = 6’. Para testar o fruto desta capacidade criativa, optamos por comparar planos de execução, de uma query sem WHERE, outra com o ‘WHERE 1=1’ e outra com ‘WHERE SQRT(SQUARE(1 + 1)) * 3 = 6’.
Veja como ‘WHERE SQRT(SQUARE(1 + 1)) * 3 = 6’ tem menor custo que as outras consultas: #sqn
Enganamos o plano de execução do SQL? Onde está seu deus agora?
Para quem duvida, segue o script:
CREATE TABLE T (ID INT NOT NULL, TXT CHAR(32) NOT NULL) ;WITH CTE (ID) AS ( SELECT 1 UNION ALL SELECT ID + 1 FROM CTE WHERE ID < 100000 ) INSERT INTO T SELECT ID, REPLICATE('0', 32) FROM CTE OPTION (MAXRECURSION 0) UPDATE T SET ID = 1 UPDATE T SET ID = 1 WHERE 1 = 1 UPDATE T SET ID = 1 WHERE SQRT(SQUARE(1 + 1)) * 3 = 6
Você poderia testar o true = true no lugar do 1=1, acho que operação lógica é mais rápida do que computar escalar.
Abraço
Já não sei de mais nada!!!
non sargable 🙂
Tem que ser muito retardado, pra descobrir uma coisa dessas. HAUHAUHAUHAUshuahUHSUHAUHU!
Parabéns, você brilhou!!!
Enganaram legal o plano de execução, o menor custo estimado se deu em função dele estimar que apenas 30000 linhas seriam afetadas.
Existem mais coisas entre o Kernel e o UI do que pressupõe nossa vã filosofia.
mas como assim!?!??!?!