Dada essa pergunta no reddit, limpei a consulta para apontar onde estava o problema na consulta. Uso vírgula primeiro e WHERE 1=1
para facilitar a modificação de consultas, de modo que minhas consultas geralmente acabam assim:
SELECT
C.CompanyName
,O.ShippedDate
,OD.UnitPrice
,P.ProductName
FROM
Customers as C
INNER JOIN Orders as O ON C.CustomerID = O.CustomerID
INNER JOIN [Order Details] as OD ON O.OrderID = OD.OrderID
INNER JOIN Products as P ON P.ProductID = OD.ProductID
Where 1=1
-- AND O.ShippedDate Between '4/1/2008' And '4/30/2008'
And P.productname = 'TOFU'
Order By C.CompanyName
Alguém basicamente disse que 1 = 1 geralmente é preguiçoso e ruim para o desempenho .
Como não quero "otimizar prematuramente" - quero seguir boas práticas. Analisei os planos de consulta antes, mas geralmente apenas para descobrir quais índices posso adicionar (ou ajustar) para fazer com que minhas consultas sejam executadas mais rapidamente.
A questão então realmente ... faz Where 1=1
com que coisas ruins aconteçam? E se sim, como posso saber?
Edição menor: Eu sempre 'assumi' que 1=1
seria otimizado ou, na pior das hipóteses, seria insignificante. Nunca é demais questionar um mantra, como "Goto é mau" ou "Otimização prematura ..." ou outros fatos assumidos. Não tinha certeza se 1=1 AND
isso afetaria realisticamente os planos de consulta ou não. E nas subconsultas? CTE's? Procedimentos?
Não sou de otimizar, a menos que seja necessário ... mas se estou fazendo algo que é realmente "ruim", gostaria de minimizar os efeitos ou alterar, quando aplicável.