Dada esta pergunta no reddit, limpei a consulta para apontar onde estava o problema na consulta. Eu uso vírgula primeiro e WHERE 1=1
para facilitar a modificação de consultas, então minhas consultas geralmente terminam 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 .
Dado que não quero "otimizar prematuramente" - quero seguir boas práticas. Já examinei os planos de consulta antes, mas geralmente apenas para descobrir quais índices posso adicionar (ou ajustar) para tornar minhas consultas mais rápidas.
A questão então realmente... faz Where 1=1
com que coisas ruins aconteçam? E se sim, como posso saber?
Edição secundária: Eu sempre 'assumi' também que isso 1=1
seria otimizado ou, na pior das hipóteses, seria insignificante. Nunca é demais questionar um mantra, como "Goto's are Evil" ou "Premature Optimization..." ou outros fatos presumidos. Não tinha certeza se 1=1 AND
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 estiver fazendo algo realmente "ruim", gostaria de minimizar os efeitos ou alterar quando aplicável.